我正在将我的应用更新到新的 iOS7/8 应用内购买库。我现在看到,从 iOS7 开始,我们可以访问 appStoreReceiptURL 作为 NSBundle 的一部分。

看来我可以随时访问此 URL 及其伴随的数据,而无需与 SKPaymentQueue 交互或接口(interface)。

以前,当客户安装我们的应用程序并希望恢复他的应用程序内订阅时,该应用程序会调用 restoreCompletedTransactions [SKPaymentQueue defaultQueue] 方法,并从中获取收据信息,一次一笔交易,该应用程序将上传到我们的服务器一个一次交易。

但是,在 iOS App Store Sandbox 中进行测试时,现在我似乎能够从 [[NSBundle mainBundle] appStoreReceiptURL] 获取一条主收据数据,将其上传到我的服务器,获取该用户进行的每笔应用内交易的完整历史记录,以及然后根据需要在我的服务器上记录交易并将通知发送回我的客户端。

因此,为什么或何时需要调用 restoreCompletedTransactions ?在我的应用中,我销售一个自动更新的应用内订阅;今天在 iOS7/8 中还有其他用例这个 API 仍然有用吗?

最佳答案

如果用户在不同的设备上进行了购买,则在新设备上“恢复”该购买可能很有用(或有必要)。 restoreCompletedTransactions 可以启用此还原操作。默认情况下,在这个新设备上,我相信 >= iOS7 风格的收据不会有那些之前的购买。在 >= iOS7 上,SKReceiptRefreshRequest 将在许多情况下工作。
来自苹果:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9

关于ios - 在 iOS7/8 中使用给定 appStoreReceiptURL 的 restoreCompletedTransactions 的任何理由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29636786/

10-13 05:42