iPhone - 如何检索应用内购买的自动续订订阅的持续时间
Posted
技术标签:
【中文标题】iPhone - 如何检索应用内购买的自动续订订阅的持续时间【英文标题】:iPhone - How to retrieve duration for auto-renewable subscription for in app purchases 【发布时间】:2011-07-09 17:19:25 【问题描述】:我正在考虑为 iPhone 应用设置应用内购买。 我计划使用新的自动更新订阅类型。但是,我想为特定订阅提供多个持续时间,但看不到如何从 SKProductsResponse.products 数组中返回的 SKProduct 检索持续时间。
SKProduct 对象具有价格、localizedTitle 和localizedDescription。但是,如果您设置具有多个持续时间的订阅系列,则为该系列设置一次标题/说明,因此您不能包含持续时间,并且文档明确表示不要在标题/说明中包含持续时间。但是,看不到任何其他字段,我可以在其中检索在我的自定义应用商店中显示的持续时间。要么我遗漏了什么,要么直到 4.3 才可用?
非常感谢您的指点!
【问题讨论】:
【参考方案1】:您需要在某处有一些映射product_id => length
,无论是在您的应用程序中还是从应用程序的后端检索。
【讨论】:
是的,这实际上就是我最终要做的。【参考方案2】:您可以为每个持续时间使用特定的 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;
【讨论】:
【参考方案3】:ios 11.2 将subscriptionDuration
属性引入SKProduct
。不过,我认为旧版 iOS 没有退路。
https://developer.apple.com/documentation/storekit/skproduct/2936884-subscriptionperiod
【讨论】:
万岁... 11 年才发现有人可能想要一种访问该信息的方法...谁会想到?大声笑以上是关于iPhone - 如何检索应用内购买的自动续订订阅的持续时间的主要内容,如果未能解决你的问题,请参考以下文章