13

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

新的自动更新交易是否会调用:

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

与 transaction.transactionState==SKPaymentTransactionStatePurchased?

如果是这样,那就太好了。如果不是,这是否意味着您必须在每次自动更新订阅接近到期时检查所有交易:

 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

谢谢...

4

1 回答 1

12

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

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

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

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

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

于 2011-04-09T19:20:55.800 回答