我正在尝试使用带有真实设备的沙盒测试用户购买一些自动更新订阅,一切正常,当时我可以看到此 SKPaymentTransactionObserver 方法也成功运行:
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction:AnyObject in transactions {
if let trans = transaction as? SKPaymentTransaction {
switch trans.transactionState {
case .purchased:
print("Success")
SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
break
case .failed:
print("Fail")
SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
break
case .restored:
print("restored")
SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
break
default:
print("Called .purchasing .deferred state")
break
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还添加了另外两个可选的 SKPaymentTransactionObserver 方法,当用户要恢复购买时使用它们,以下是这些方法:
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
print("Restore completed")
let transactionCount = queue.transactions.count
if transactionCount == 0{
print("No previous transactions found") …Run Code Online (Sandbox Code Playgroud)