gpt4 book ai didi

ios - 调用SKPaymentQueue restoreCompletedTransactions,无响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:36:29 25 4
gpt4 key购买 nike

这里的用例是用户从未购买过我的应用内购买但点击了“恢复”按钮。我想让用户知道恢复失败,因为没有任何东西可以恢复。

问题是我没有收到任何事件。所以我不知道发生了什么事。

当我的用户点击我界面中的恢复按钮时,我调用

SKPaymentQueue.default().restoreCompletedTransactions

然而,在那之后什么也没有发生。我希望调用我的 SKPaymentTransactionObserver paymentQueue(_:updatedTransactions:),但事实并非如此。

我尝试实现 paymentQueue(_:restoreCompletedTransactionsFailedWithError:),但它也没有被调用。

最佳答案

你太接近了!您需要实现此 SKPaymentTransactionObserver 方法:

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
// ...
}

如果设备能够与 App Store 通信,则在 restoreCompletedTransactions 之后调用该方法——无论恢复成功是因为用户确实有购买要恢复,还是失败是因为用户没有要恢复的购买。

不幸的是,您无法在此处获得有关刚刚发生的事情的任何信息。我认为这是 StoreKit 架构中的一个缺陷。

但是,如果恢复成功,我们将通过 paymentQueue(_:updatedTransactions:)transactionState.restored。因此,您可能正在设置某种 UserDefaults Bool(或类似的)来指示用户已进行此购买。

嗯, paymentQueueRestoreCompletedTransactionsFinished 被调用之前发生或不发生。因此,在 paymentQueueRestoreCompletedTransactionsFinished 中,您可以查看 UserDefaults Bool 是否已设置,如果未设置,您可以猜测用户可能一开始就没有进行任何购买,并做出相应的响应。

这是猜测,但总比没有好。

关于ios - 调用SKPaymentQueue restoreCompletedTransactions,无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47276769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com