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

Pet*_*mer 13 iphone subscriptions app-store in-app-purchase

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

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
Run Code Online (Sandbox Code Playgroud)

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

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
Run Code Online (Sandbox Code Playgroud)

使用transaction.transactionState == SKPaymentTransactionStatePurchased?

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

 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
Run Code Online (Sandbox Code Playgroud)

谢谢...

小智 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 ....谢谢.