iOS IAP - 在之前没有购买时处理恢复

iOS IAPs - Handling restore when no previous purchase was made

我有点新手,但在过去的三个月里,我几乎自学了从头开始编码(感谢 youtube!)。如果我犯了一个明显的错误,请原谅。

我的应用程序已经准备就绪,但我有一个错误,我似乎无法在线找到解决方案。

基本上,我的 IAP 进程运行正常,恢复功能大部分时间也是如此。然而,当用户按下恢复按钮但之前没有进行任何非消耗性应用内购买时,我遇到了一个错误。我的应用程序只停留在 'restoring' 状态,微调器和 interactionEvents 被忽略。

我不确定在 paymentQueue 似乎没有返回任何已恢复交易的情况下,将取消微调器和结束忽略交互事件的代码放在哪里。

我已尝试将其置于 .default 下以用于以下内容:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        switch transaction.transactionState

但它似乎并没有起作用。

有没有人以前遇到过这种情况并对如何处理这种情况有建议?

此致, 加文

当您启动恢复时,观察者方法 paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) 将使用之前购买的交易进行调用。如果没有购买,则不会调用此方法。

购买恢复完成后,将调用 paymentQueueRestoreCompletedTransactionsFinished(_:) 观察者方法。这是您应该更新 UI 以指示恢复已完成的方法;隐藏微调器等