我正在将我的应用更新到新的iOS7 / 8应用内购买库。我现在看到,从iOS7开始,我们可以访问appStoreReceiptURL
作为NSBundle的一部分。
我似乎可以随时访问此网址及其相应的数据,而无需与SKPaymentQueue
进行交互或接口。
以前,当客户安装我们的应用并希望恢复其应用内订阅时,应用会调用[SKPaymentQueue defaultQueue]
[[NSBundle mainBundle] appStoreReceiptURL]
方法,并从中获取收据信息,时间,应用程序将一次上传到我们的服务器一个事务。
但是,在iOS App Store Sandbox中进行测试时,现在我似乎可以从restoreCompletedTransactions
获取一个主收据数据,将其上传到我的服务器,获取每个应用内的完整历史记录此用户进行的事务,然后根据需要在我的服务器上记录事务,并将通知发送回我的客户端。
因此,为什么或何时需要致电{{1}}?在我的应用程序中,我销售一个自动续订的应用内订阅;今天在iOS7 / 8中还有其他用例,这个API仍然有用吗?
答案 0 :(得分:1)
如果用户在其他设备上进行了购买,那么恢复"是有用的(或必要的)。在新设备上购买。 restoreCompletedTransactions可以启用此还原操作。默认情况下,在这台新设备上,我认为> = iOS7样式收据不会包含之前的购买。在> = iOS7上,SKReceiptRefreshRequest在很多情况下都可以使用。
来自Apple:
在大多数情况下,您的应用需要做的就是刷新收据 在收据中交付产品。刷新的收据包含一个 用户在此应用程序,此设备或任何设备上购买的记录 其他设备。但是,某些应用需要采取其他方法 出于以下原因之一:
如果您使用Apple托管的内容,请恢复已完成的交易 为您的应用程序提供用于下载的事务对象 内容。
如果您需要支持早于iOS 7的iOS版本, 如果应用收据不可用,请恢复已完成的交易 代替。
如果您的应用使用非续订订阅,那么您的应用就是 负责恢复过程。