在iOS7 / 8中给出appStoreReceiptURL使用restoreCompletedTransactions的任何理由?

时间:2015-04-14 20:26:40

标签: ios ios7 in-app-purchase

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

我似乎可以随时访问此网址及其相应的数据,而无需与SKPaymentQueue进行交互或接口。

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

但是,在iOS App Store Sandbox中进行测试时,现在我似乎可以从restoreCompletedTransactions获取一个主收据数据,将其上传到我的服务器,获取每个应用内的完整历史记录此用户进行的事务,然后根据需要在我的服务器上记录事务,并将通知发送回我的客户端。

因此,为什么或何时需要致电{{1}}?在我的应用程序中,我销售一个自动续订的应用内订阅;今天在iOS7 / 8中还有其他用例,这个API仍然有用吗?

1 个答案:

答案 0 :(得分:1)

如果用户在其他设备上进行了购买,那么恢复"是有用的(或必要的)。在新设备上购买。 restoreCompletedTransactions可以启用此还原操作。默认情况下,在这台新设备上,我认为> = iOS7样式收据不会包含之前的购买。在> = iOS7上,SKReceiptRefreshRequest在很多情况下都可以使用。

来自Apple:

  

在大多数情况下,您的应用需要做的就是刷新收据   在收据中交付产品。刷新的收据包含一个   用户在此应用程序,此设备或任何设备上购买的记录   其他设备。但是,某些应用需要采取其他方法   出于以下原因之一:

     

如果您使用Apple托管的内容,请恢复已完成的交易   为您的应用程序提供用于下载的事务对象   内容。

     

如果您需要支持早于iOS 7的iOS版本,   如果应用收据不可用,请恢复已完成的交易   代替。

     

如果您的应用使用非续订订阅,那么您的应用就是   负责恢复过程。

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