我知道有很多信息,但我无法确定在设备之间恢复IAP订阅的正确方法是什么。显然,在挖掘网络之后,没有关于此的真正好的文档,人们不得不主要通过试验和错误来处理它。
我正准备用IAP订阅最终的第一个应用程序,并且在我准备上传它以供批准之前有一些疑问。看起来测试过程中的行为与生产过程中的行为完全不同,而我只是没有生产经验,无法确定究竟发生了什么。
我实施该流程的方式如下:
finishTransaction
并验证收据(可以是本地或远程,但这是一个不同的问题)finishTransaction
并进行新的验证。这在一台设备上运行良好,没有任何问题
但是,当我想要在其他设备上恢复这些购买时,续订通知可能不会作为收到通知调用的第一个设备finishTransaction
发送,而所有其他设备都会错过它。
然后我有两个选项 - 使用SKReceiptRefreshRequest
刷新收据或使用restoreCompletedTransactions
恢复购买。我根据之前的购买到期日期在某个时间制作其中一个,以检查用户是否未停止订阅。 (订阅取消是另一个主题 - 类似但现在我不介意)
刷新过程看起来像我喜欢的那个,但至少在Sandbox中,它总是要求用户登录(两次,我不知道它是否正常,加上在沙盒中我找不到方法实现Touch ID)。然后,应用程序会收到一个新刷新的收据并完成验证过程,这很棒。
第二种方法静默地请求新收据(这比以前更加优惠)但据我所知,它总是使新收据中的交易金额加倍,因为它为每个完成的收据进行了新的交易: / p>
支付队列将为之前的每个交付新交易 已完成的可以恢复的交易。每笔交易包括 原始交易的副本。
所以...我的问题是:
SKReceiptRefreshRequest
的沙箱相同 - 如果用户每次想要刷新收据时登录,并且集成Touch ID是否需要其他实施?
如果我有,请说周订阅,,这对用户来说会非常烦人。restoreCompletedTransactions
,收据在某些时候会变得无用的交易吗?
如果用户再次假设一年周订阅并将其恢复到其他几个设备上,那么他们都将填写最终收据。非常感谢!