Ios 如何恢复和验证自动续订订阅?
首先,关于这个主题似乎有很多问题,但大多数问题似乎已经过时,并且没有考虑iOS 9中可用的API 1) 如何恢复购买? 当用户在>=iOS 9上点击自动续费订阅的Ios 如何恢复和验证自动续订订阅?,ios,swift,in-app-purchase,app-store,Ios,Swift,In App Purchase,App Store,首先,关于这个主题似乎有很多问题,但大多数问题似乎已经过时,并且没有考虑iOS 9中可用的API 1) 如何恢复购买? 当用户在>=iOS 9上点击自动续费订阅的Restore-Purchase按钮时,是否应调用SKReceiptRefreshRequest或SKPaymentQueue.defaultQueue().restoreCompletedTransactions()?目前,我验证收据文件以确定活动订阅并解析最新收据信息,调用restoreCompletedTransactions时是
Restore-Purchase
按钮时,是否应调用SKReceiptRefreshRequest
或SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
?目前,我验证收据文件以确定活动订阅并解析最新收据信息
,调用restoreCompletedTransactions
时是否也在设备上创建收据文件
2) 如何验证自动续费订阅?
要验证>=iOS 9上的自动续费订阅是否仍处于活动状态且未取消,我将在用户每次启动应用程序时调用SKReceiptRefreshRequest
。但政府说:
在你的应用程序中加入一些机制,让用户恢复他们的
购买,例如恢复购买按钮。恢复购买
提示输入用户的应用商店凭据,这会中断
应用程序流:因此,不会自动恢复
购买,特别是不是每次启动应用程序时购买
我应该每天只给它打一次电话,还是有其他方法来验证订阅
更新:
对于2)刚刚发现的:
在应用程序启动后立即执行收据验证,
在显示任何用户界面或生成任何子进程之前。
在主功能中执行此检查,然后
调用NSApplicationMain函数。为了增加安全性,您可以
在应用程序运行时定期重复此检查
显然,收据可以在没有用户交互的情况下进行验证。为了安全起见,甚至建议在自己的服务器上执行此操作。因此,只要收据由App Store服务器验证,就不需要收据刷新请求。对于(2)-您应该只在每次希望续订时验证订阅,并存储该订阅已续订。不需要重复这么做。@sschale订阅可能会被取消,所以我必须重复检查,不是吗?那取决于你有多偏执。这是用户体验和安全性之间的权衡。@sschale我认为你认为这是一种权衡的假设是不正确的。显然,无需收据刷新请求即可验证收据。苹果甚至建议反复验证收据,看我的更新。啊-阅读这些文档,我认为恢复购买和刷新收据是有区别的。我在这里没有实际经验,但我会尝试调用刷新,看看它是否不会提示登录。