gpt4 book ai didi

ios - 尚未购买的 IAP 正在恢复

转载 作者:行者123 更新时间:2023-11-30 11:19:04 24 4
gpt4 key购买 nike

当用户调用restorePurchases()时,非消耗性的com.premium会被恢复,即使他们并不拥有它。以下是负责恢复购买和购买 IAP 的函数。这只是非消耗性 IAP 的问题。购买没有任何问题。如果用户尝试购买他们已经拥有的 IAP,它就会被简单地恢复。感谢您关注此事。

func restorePurchases() {
SKPaymentQueue.default().add(self)
SKPaymentQueue.default().restoreCompletedTransactions()
}

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
print("transactions restored")

for transaction in queue.transactions {
let t: SKPaymentTransaction = transaction

let prodID = t.payment.productIdentifier as String
print("starting restoring")
switch prodID {
case "com.premium":
print("restoring ads")
removeAds()
case "com.cash":
print("we dont restore coins")
case "com.level":
print("we dont restore levels")
default:
print("can't restore")
}
}

这也是我的付款队列。

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
print("add paymnet")

for transaction:AnyObject in transactions {
let trans = transaction as! SKPaymentTransaction
print(trans.error)

switch trans.transactionState {

case .purchased:
print("buying, ok unlock iap here")
print(p.productIdentifier)

let prodID = p.productIdentifier as String
switch prodID {
case "com.premium":
print("buying ads")
removeAds()
case "com.cash":
print("buying coins")
addCoins()
case "com.level":
print("buying levels")
addLevels()
default:
print("can't buy")
}

queue.finishTransaction(trans)
break;
case .failed:
print("buy error")
queue.finishTransaction(trans)
break;
default:
print("default")
break;

}
}
}

最佳答案

您不应在 paymentQueueRestoreCompletedTransactionsFinished 中更新任何购买状态。此功能只是让您知道恢复过程已完成。您可以使用它来更新您的用户界面或显示警报或其他内容。

恢复过程将要恢复的事务传送到 updatedTransactions处理 .restored 的函数以与处理 .purchased 相同的方式声明状态。

本质上,“恢复”只是重播非消耗品和自动续订订阅购买类型的购买交易流程。

关于ios - 尚未购买的 IAP 正在恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51486318/

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