如果你想要在paymentQueue:updatedTransactions
方法中直接返回购买的交易状态,你可以使用下面的代码示例:
import StoreKit
class MyStoreManager: NSObject, SKPaymentTransactionObserver {
func startObservingTransactions() {
SKPaymentQueue.default().add(self)
}
func stopObservingTransactions() {
SKPaymentQueue.default().remove(self)
}
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased:
// 购买成功
handleTransactionPurchased(transaction)
return // 直接返回购买的交易状态
case .failed:
// 购买失败
handleTransactionFailed(transaction)
return // 直接返回购买的交易状态
case .restored:
// 已恢复购买
handleTransactionRestored(transaction)
return // 直接返回购买的交易状态
case .deferred:
// 交易延迟
handleTransactionDeferred(transaction)
return // 直接返回购买的交易状态
case .purchasing:
// 正在购买
handleTransactionPurchasing(transaction)
return // 直接返回购买的交易状态
@unknown default:
// 未知状态
handleUnknownTransaction(transaction)
return // 直接返回购买的交易状态
}
}
}
func handleTransactionPurchased(_ transaction: SKPaymentTransaction) {
// 处理购买成功的交易
}
func handleTransactionFailed(_ transaction: SKPaymentTransaction) {
// 处理购买失败的交易
}
func handleTransactionRestored(_ transaction: SKPaymentTransaction) {
// 处理已恢复购买的交易
}
func handleTransactionDeferred(_ transaction: SKPaymentTransaction) {
// 处理交易延迟的情况
}
func handleTransactionPurchasing(_ transaction: SKPaymentTransaction) {
// 处理正在购买的情况
}
func handleUnknownTransaction(_ transaction: SKPaymentTransaction) {
// 处理未知状态的交易
}
}
在上面的示例中,我们创建了一个名为MyStoreManager
的类,该类遵循SKPaymentTransactionObserver
协议,并实现了paymentQueue:updatedTransactions
方法。在该方法中,我们遍历了所有的交易,并根据交易的状态调用相应的处理方法。每个处理方法都可以根据实际需求进行自定义。
当我们在处理成功、失败、恢复、延迟或正在购买的交易后,我们使用return
语句直接返回购买的交易状态,这样我们就可以在方法调用处获取到该状态。