还原事务未调用付款队列

时间:2018-05-16 21:42:22

标签: ios swift in-app-purchase

**编辑:我已经将原因缩小到购买Apple Hosted Content。非正式内容的定期购买可以正常恢复。

我似乎无法在我的应用上恢复购买。购买工作完全正常。但是当我使用一个调用的函数时:

SKPaymentQueue.default().restoreCompletedTransactions()

永远不会调用付款队列

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    //Not called!
}

对于常规购买,paymentQueue没有问题。

看起来恢复正常完成,因为在运行上面的.restoredCompletedTransactions后,我立即调用了这个函数。

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {       
print ("This works")  
}

我还检查了以下内容并且没有收到任何错误:

func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error) 

SKPaymentQueue.add(self)在restoredCompletedTransactions之前被调用,因此这也不应成为问题。

什么可能导致IAP工作完全正常,但不能恢复?我正在使用物理设备测试它,并使用沙盒帐户。

recent question had a similar problem,但从未得到答案。此外,我不确定这是否重要,但购买的是使用Apple Hosted Content。

任何帮助都将非常感激!它在这里杀了我。

1 个答案:

答案 0 :(得分:0)

所以我想出来了。

我从iTunes Connect删除了所有应用内购买,并重新创建了它们(包含托管内容),并解决了问题。

我认为问题可能是我在创建应用内购买后的某个时刻更改了套件标识符。虽然我已经将产品的ID和代码调整为新的捆绑标识符,但我想知道这些原始购买历史是否正在尝试恢复,并且由于这些原始购买使用了旧的捆绑标识符,因此他们不会加载为事务。