gpt4 book ai didi

swift - 如何正确恢复应用内购买?

转载 作者:搜寻专家 更新时间:2023-11-01 05:47:21 25 4
gpt4 key购买 nike

我有一些应用内购买。但是,我读到我需要提供一种方法来恢复它们,以防它们意外删除我的应用程序。它们是非消耗品,例如皮肤和纹理。我正在阅读本网站上的教程:https://code.tutsplus.com/tutorials/in-app-purchase-tutorial-with-swift-3-ios-sdk--cms-27595

但是,他们对恢复交易的解释让我很困惑。他们这样做了:

@IBAction func restorePurchaseButt(_ sender: Any) {
SKPaymentQueue.default().add(self)
SKPaymentQueue.default().restoreCompletedTransactions()
}

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
nonConsumablePurchaseMade = true
UserDefaults.standard.set(nonConsumablePurchaseMade, forKey: "nonConsumablePurchaseMade")

UIAlertView(title: "IAP Tutorial",
message: "You've successfully restored your purchase!",
delegate: nil, cancelButtonTitle: "OK").show()
}

但是,他们从未向我展示他们实际使用 paymentQueueRestoreCompletedTransactionsFinished() 的位置。我知道他们正在使用 restorePurchaseButt() 来恢复购买。但是,我不明白这两种方法。

SKPaymentQueue.default().add(self)
SKPaymentQueue.default().restoreCompletedTransactions()

这段代码如何检查用户是否进行了购买?我没有看到任何 if 语句。我假设 restoreCompletedTransactions() 可能会触发 paymentQueueRestoreCompletedTransactionsFinished(),但我不确定?然而,即使是这样,paymentQueueRestoreCompletedTransactionsFinished() 如何检查玩家是否进行了这些交易? 现在有多个应用内购买时如何恢复?

最佳答案

正如您在恢复按钮中所做的那样,您需要添加:

SKPaymentQueue.default().add(self)
SKPaymentQueue.default().restoreCompletedTransactions()

然后您还需要为您在 iTunesConnect 中的不同应用内购买添加此功能。将案例的“ProductID”更改为来自 iTunesConnect 的产品 ID,并添加与应用内购买一样多的案例。

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
for transaction in queue.transactions {
let t: SKPaymentTransaction = transaction
let prodID = t.payment.productIdentifier as String

switch prodID {
case "ProductID1":
// implement the given in-app purchase as if it were bought
case "ProductID2":
// implement the given in-app purchase as if it were bought
default:
print("iap not found")
}
}
}

回答您的问题:看起来您所遵循的这个特定教程的重点是教您应用内购买的总体思路,并使用了他们的示例购买而不是可用于多种产品的代码。

Apple 通过您在按下按钮时调用的 restoreCompletedTransactions() 函数来检查该项目之前是否已购买。这是 Apple 提供的 StoreKit 框架的一部分。一旦检查完成,它会自动触发 paymentQueueRestoreCompletedTransactionsFinished() 函数。使用我在上面提供的代码,它会根据它找到的购买执行不同的代码,或者如果它没有找到要恢复的产品则打印到控制台。

关于swift - 如何正确恢复应用内购买?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45765122/

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