自动续订订阅会在自动续订时发送SKPaymentTransactionStatePurchased交易吗?

时间:2011-03-22 18:53:27

标签: iphone in-app-purchase app-store subscriptions

AppStore在自动续订自动续订订阅时是否发出交易?如果是这样,如果应用程序下次加载,如果它自己设置为观察者,它是否可以被App检测到:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

新的自动续订交易是否会拨打电话:

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

使用transaction.transactionState == SKPaymentTransactionStatePurchased?

如果是这样,很好。如果不是,这是否意味着您必须在每次自动续订订阅到期时检查所有交易:

 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

...谢谢

1 个答案:

答案 0 :(得分:12)

经过一些研究,我可以回答我自己的问题并提出另一个相关问题。 App Store调用paymentQueue并发布交易。该事务使用transaction.transactionState == SKPaymentTransactionStateRestored发布, 不是transaction.transactionState == SKPaymentTransactionStatePurchased。

问题是,不幸的是,这只会发布到一台设备上。第二个设备无法发布。因此,要检测自动续订,或者更确切地说检测缺少自动更新并拒绝设备继续订阅,您必须执行restoreCompletedTransaction或“http发布包含最后一个事务的64位编码JSON”。如果是fomer,用户需要提供密码;这是侵入性的。如果是后者,则需要许多额外的编码。所以,我的问题是......为什么StoreKit没有命令:

(不存在) - [[SKPaymentQueue defaultQueue] restoreAttachedTransactions:(NSArray *)transactions];

此命令将像restoreCompletedtRansactions一样流动,但它只会恢复附加的事务,最重要的是,它不需要用户登录。它具有与“http发布包含最后一个事务的64位编码JSON”相同的安全保护,它允许整个In App Purchase过程在StoreKit中完成,而不是需要Web发布代码。

如果这对您有意义,请建议如何将其发送给Apple ....谢谢。