我很难理解iOS上应用内购买的工作原理。我正在开发一个适用于iOS9 +的Swift2应用程序,用户可以订阅自动续订订阅。
订阅过程运行正常:我进行购买,然后将收据发送到我的后端服务器以验证收据,并将响应返回给我的应用程序。如果验证成功,我会向用户显示成功页面。
问题是我必须在每次启动时检查订阅是否仍然有效。以下是我的问题:
我何时需要使用SKReceiptRefreshRequest
刷新收据,以便我的后端收到最新的收据信息?这样做会提示用户输入他们的iTunes登录名/密码,非常烦人。在我的设备上进行测试时,在第一次启动时,没有收据数据,但几秒钟后,收据可用,没有请求刷新或恢复...所以似乎某种方式收据被iOS下载?!
如果我的订阅续订,我会将收据发布到我的后端,当使用iTunes API进行验证时,我只看到初始购买,而不是续订。所以我想我应该要求每次启动都刷新收据?
使用SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
功能恢复应用内购买(使用我的界面中的按钮手动触发)时,收据是否会同时刷新?假设用户获取新设备并安装我的应用程序,如果我不要求收据刷新,他可以触发恢复购买按钮。恢复功能完成后是否会更新收据?如果是这样,恢复购买是否更好(如果已经登录App Store则不提示用户/密码)而不是刷新收据,因为它会在相同的结果中实现,但不会询问密码?
许多事情没有记录,我搜索了很多,无法找到有关这些问题的明确信息。我真的很想了解/知道什么是正确的工作流程。任何帮助将不胜感激!