还原事务未调用付款队列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还原事务未调用付款队列相关的知识,希望对你有一定的参考价值。

**编辑:我已经缩小了购买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。

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

答案

所以我有点想通了。

我从iTunes Connect中删除了所有应用内购买,并重新创建了它们(带有托管内容),并修复了问题。

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

以上是关于还原事务未调用付款队列的主要内容,如果未能解决你的问题,请参考以下文章

片段中未调用 onSaveInstanceState

片段android中未调用onActivityResult [重复]

进行事务处理时消息未到达 MSMQ

替换未调用 onAttach、onCreate、onCreateView 等的活动中的片段

Android中的片段事务问题

Redis事务