我正在考虑为iPhone应用设置In App Purchases。 我打算使用新的自动续订订阅类型。但是,我想为特定订阅提供多个持续时间,但无法看到我如何从SKProductsResponse.products数组中返回的SKProduct中检索持续时间。
SKProduct对象具有price,localizedTitle和localizedDescription。但是,如果您设置具有多个持续时间的订阅系列,则为该系列设置一次标题/说明,以便您不能包括持续时间,并且文档明确表示不在标题/说明中包含持续时间。但是,看不到任何其他字段,我可以检索在我的自定义应用商店中显示的持续时间。我要么缺少某些东西,要么直到4.3才会出现?
指针非常感谢!
答案 0 :(得分:10)
您需要在应用中的某处或在应用的后端检索某个地图product_id => length
。
答案 1 :(得分: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;
答案 2 :(得分:5)
iOS 11.2将subscriptionDuration
属性带到SKProduct
。我不认为旧的iOS会出现回落。
https://developer.apple.com/documentation/storekit/skproduct/2936884-subscriptionperiod