gpt4 book ai didi

swift - 我想在我的开关盒中运行这两个功能,但只运行一个;我该如何解决?

转载 作者:行者123 更新时间:2023-11-28 07:31:55 24 4
gpt4 key购买 nike

以下函数描述了应用内购买 (IAP) 的 paymentQueue。选择 .purchase 案例时,将运行“SKPaymentQueue.default().finishTransaction(transaction)”函数。但是,这种情况下的第二个函数“transactionComplete()”不会。

我想要的是:首先完成“SKPaymentQueue.default().finishTransaction(transaction)”函数,然后运行“transactionComplete()”函数。

背景:

“SKPaymentQueue.default().finishTransaction(transaction)”是一个用于完成 IAP 交易的无效 StoreKit 函数。

“transactionComplete()”是我自己的函数,它显示一个弹出 View ,感谢用户的购买。此功能有效,只是不适用于这种情况。

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased:
SKPaymentQueue.default().finishTransaction(transaction)
transactionComplete()
break
case .failed:
print("transaction failed.")
break
default:
break
}
}
}

提前致谢!

编辑:

因为这是我第一次使用 IAP,所以我正在试验函数。因此,由于它所属的类在 AppDelegate.swift 中用作观察者,我的应用正在读取的另一个文件中有另一个 paymentQueue(...) 函数的副本

最佳答案

这个方法可能不会在主线程上触发。

尝试使用 print("isMain?\(Thread.current.isMainThread)") 来确定它是否是,如果不是,像这样包装你的回调:

DispatchQueue.main.async {
transactionComplete()
}

关于swift - 我想在我的开关盒中运行这两个功能,但只运行一个;我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451580/

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