Ios 更新的交易(transactionState=.restored)与paymentQueueRestoreCompletedTransactionsFinished
正如标题所描述的,实际的区别是什么 如果我有这个:Ios 更新的交易(transactionState=.restored)与paymentQueueRestoreCompletedTransactionsFinished,ios,swift,xcode,in-app-purchase,swift5,Ios,Swift,Xcode,In App Purchase,Swift5,正如标题所描述的,实际的区别是什么 如果我有这个: func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { for transaction in transactions { if transaction.transactionState == .purchased { } else
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
if transaction.transactionState == .purchased {
} else if transaction.transactionState == .failed {
} else if transaction.transactionState == .restored { // <- This one
}
}
当您开始恢复交易时,所有可用的交易都会以
.restored
状态显示给您的支付队列观察者。此时,您应该恢复事务;以与处理初始购买相同的方式有效地处理它
根据可恢复的事务,您将获得0到n个事务(可能没有任何可恢复的事务)
显示所有可用事务后,您将接到一个呼叫paymentQueueRestoreCompletedTransactionsFinished
。每次调用restoreCompletedTransactions
时,您总是会得到一个对此方法的调用
请注意,没有将还原事务的详细信息传递给此方法。此方法的目的是允许您执行任何最终管理,例如更新UI
例如,当用户点击“还原”按钮时,您可以显示一条“还原”消息,当您接到呼叫
paymentQueueRestoreCompletedTransactionsFinished
好的,我明白了!但是,当用户已经购买了IAP,并再次按下购买按钮时,transactionState==.restored
根本不会运行。但当点击恢复按钮时,paymentQueueRestoreCompletedTransactionsFinished
将运行。按下购买按钮时,为什么不运行transactionState==.restored
呢?因为在第一种情况下,您没有启动恢复,而是启动了购买。如果是非消耗品购买,则第二次购买不向用户收费
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
}