iPhone - 如何在应用程序内购买检索自动再生订阅持续时间

问题描述:

我在寻找一个iPhone应用程序设置在应用内购买。 我打算使用新的自动更新订阅类型。不过,我想提供特定订阅多个时长,但不能看我怎么可以检索从在SKProductsResponse.products数组中返回的SKProduct的持续时间。iPhone - 如何在应用程序内购买检索自动再生订阅持续时间

的SKProduct对象有价格,localizedTitle和localizedDescription。不过,如果你设置订阅家庭与多个​​时长标题/描述中的家庭设置一次,所以你可以不包括持续时间和文档明确地说,不包括在标题/描述的持续时间。但是,无法看到任何其他字段,我可以检索在我的自定义应用商店中显示的持续时间。要么我错过了一些东西,要么直到4.3才能上市?

指针不胜感激!

你需要有一定的映射product_id => length的地方,无论是在你的应用程序或应用的后端retrived。

+0

是的,这是我最终做的。 – 2011-03-31 04:07:23

对于每个持续时间,您可以使用特定的productIdentifier(在productIdentifier下面的代码中,为1个月的订阅为“com.domainname.myapp.sub1month”,持续7天的持续时间为“com.domainname.myapp”。 sub7day“)和搜索,在paymentQueue:

-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{ 
    for(SKPaymentTransaction *transaction in transactions){ 
    switch (transaction.transactionState){ 
     case SKPaymentTransactionStatePurchasing: 
      break; 
     case SKPaymentTransactionStatePurchased: 
      if([transaction.payment.productIdentifier isEqualToString:@"com.domainname.myapp.sub1month"]{ 
       newSubscriptionEndDate=[transaction.transactionDate timeIntervalSinceReferenceDate]+3600*24*31; 
      } 
      if([transaction.payment.productIdentifier isEqualToString:@"com.domainname.myapp.sub7day"] ){ 
       newSubscriptionEndDate=[transaction.transactionDate timeIntervalSinceReferenceDate]+3600*24*7; 
      } 
      [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
      break; 
+0

基本上我做了什么 – 2011-03-31 04:07:47

iOS的11.2带来了subscriptionDuration属性SKProduct。不过,我认为旧iOS不会有后备。

https://developer.apple.com/documentation/storekit/skproduct/2936884-subscriptionperiod