问题描述
我有一个非自动订阅的iOS应用。我在应用程序中添加了一个还原按钮,以允许用户在其他手机上安装该应用程序时恢复其订阅。但是用户遇到异常行为。
某些用户能够恢复其订阅,对于某些“恢复”按钮而言,它什么也没做,看来苹果甚至从未调用过paymentQueue()回调。
我在打电话,
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
我发现了这个,似乎表明您需要先调用它?
let receiptRefreshRequest: SKRequest = SKReceiptRefreshRequest()
receiptRefreshRequest.delegate = self
receiptRefreshRequest.start()
在订阅后,我们还在自己的测试中转到“ iPhone设置” /“ Apple ID” /“订阅”,它为空?还是Apple仅管理自动续订,而非自动订阅由您自己承担??
另一个奇怪的行为是我将预订记录存储在iCloud中,因此,根据我的理解,即使同一用户在另一部电话上登录,即使没有调用恢复操作,他们仍然应该看到其预订。但这似乎并非如此?在同一部手机上重新启动应用程序后,似乎还无法在iCloud中存储?
NSUbiquitouskeyvalueStore *storage = [NSUbiquitouskeyvalueStore defaultStore];
解决方法
因此,我们切换到管理在我们的服务器上自己跟踪的订阅。
“跟踪和还原非续订订阅是您的责任。Apple仅处理自动续订订阅的还原。”