iPhone - 如何检索应用内购买的自动续订订阅的持续时间

Mar*_*yly 14 iphone subscriptions storekit in-app-purchase

我正在寻找为iPhone应用程序设置In App Purchases.我打算使用新的自动续订订阅类型.但是,我想为特定订阅提供多个持续时间,但无法查看如何从SKProductsResponse.products数组中返回的SKProduct中检索持续时间.

SKProduct对象具有price,localizedTitle和localizedDescription.但是,如果您设置具有多个持续时间的订阅系列,则为该系列设置一次标题/说明,以便您不能包括持续时间,并且文档明确表示不在标题/说明中包含持续时间.但是,看不到任何其他字段,我可以检索在我的自定义应用商店中显示的持续时间.我要么缺少某些东西,要么在4.3之前无法使用?

指针非常感谢!

Syl*_*ain 10

您需要product_id => length在应用程序中的某个位置进行映射,或者从应用程序的后端进行重新映射.


Pet*_*mer 10

您可以为每个持续时间使用特定的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;
Run Code Online (Sandbox Code Playgroud)


Ben*_*air 5

iOS 11.2将该subscriptionDuration属性引入SKProduct。我认为旧版iOS没有后备功能。

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

  • Hooray ... 11年的时间来弄清楚某个人可能想要一种访问该信息的方法....谁会想到的?大声笑 (4认同)