首先,关于这个主题的SO似乎有很多问题,但大多数似乎已经过时,并没有考虑iOS 9中提供的API .
1)如何恢复购买?
当用户在> = iOS 9上点击 Restore Purchase
按钮进行自动续订订阅时,是否应该调用 SKReceiptRefreshRequest
或 SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
?目前我验证收据文件以确定活动订阅和解析 latest_receipt_info
,是否在调用 restoreCompletedTransactions
时在设备上创建了收据文件?
2)如何验证自动续订订阅?
要验证> = iOS 9上的自动续订订阅仍处于活动状态且未取消,我会在每次用户启动应用时调用 SKReceiptRefreshRequest
. 但docs说:
在您的应用中包含一些机制,让用户恢复购买,例如“恢复购买”按钮 . 恢复购买会提示用户的App Store凭据,这会中断您的应用流量:因此,请勿自动恢复购买,尤其是每次启动应用时都不会 .
我应该每天只拨打一次还是有其他方式来验证订阅?
更新:
2)刚发现这个here:
在启动应用程序之后立即执行收据验证,然后再显示任何用户界面或生成任何子进程 . 在调用NSApplicationMain函数之前,在main函数中实现此检查 . 为了提高安全性,您可以在应用程序运行时定期重复此检查 .
显然,收据可以在没有用户交互的情况下进行验证 . 为了安全起见,甚至建议在自己的服务器上进行此操作 . 因此,只要收据由App Store服务器验证,就不需要收据刷新请求 .