自动订阅应用内购买:恢复后续续订

Ada*_*nst 5 cocoa-touch subscription in-app-purchase ios

根据Apple In App Purchase编程指南:

每次续订订阅时,App Store都会创建一个单独的事务.当您的应用程序恢复以前的购买时,Store Kit会将每笔交易交付给您的应用程序.

让我们假设我的应用订阅仅限客户端(没有服务器组件).验证后续续费的最简单方法似乎是每月恢复以前的购买.

但是,每次打电话时都会弹出用户的iTunes密码提示restoreCompletedTransactions,这似乎是糟糕的用户体验.唯一可以使用服务器收据验证码(以及新的"共享密码")吗?

小智 3

App Store 会调用 paymentQueue 并在每次自动更新时发布交易。交易以 transaction.transactionState==SKPaymentTransactionStateRestored 发布。

问题是不幸的是这仅发布到一台设备。第二台设备未收到该帖子。因此,要检测自动续订,或者更确切地说,要检测缺乏自动续订并拒绝任何设备的持续订阅,您必须执行 RestoreCompletedTransaction 或“http post 包含最后一笔交易的 64 位编码 JSON”。如果是前者,用户需要提供密码;正如你所指出的,这是侵入性的。如果是后者,则需要大量额外的编码。所以,我在回答你的问题时的问题是......为什么 StoreKit 没有命令:

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

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

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