【发布时间】:2020-05-16 14:39:19
【问题描述】:
我已经制作了一个带有 IAP 的应用程序,我第一次尝试对其进行测试,我收到了登录提示,但从那以后,我没有收到任何登录提示(我认为这是因为有一个失败的事务卡在队列中)。
在清除交易队列方面我迫切需要帮助,因为所有这些 IAP 语言对我来说都非常陌生。我已经在几个地方阅读了以下 sn-p 的工作原理,但老实说,我不确定如何正确使用它:
for transaction in SKPaymentQueue.default().transactions {
guard
transaction.transactionState != .purchasing,
transaction.transactionState != .deferred
else {
//Optionally provide user feedback for pending or processing transactions
return
}
//Transaction can now be safely finished
SKPaymentQueue.default().finishTransaction(transaction)
}
sn-p 终于又出现了登录提示,但后来我陷入了一个永无止境的登录循环。
下面是我选择放置它的位置,但它目前只是让我在登录后立即再次登录...... (新代码 sn-p 位于两行注释“NEW”之间)
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { //--------- In App Purchase
for transaction in transactions{
//------------------------------------------------------------ New
for transaction in SKPaymentQueue.default().transactions {
guard
transaction.transactionState != .purchasing,
transaction.transactionState != .deferred
else {
//Optionally provide user feedback for pending or processing transactions
return
}
//Transaction can now be safely finished
SKPaymentQueue.default().finishTransaction(transaction)
}
//------------------------------------------------------------ New
if transaction.transactionState == .purchased {
print("Transaction Successful")
packsUnlocked = true
} else if transaction.transactionState == .failed {
print("Transaction Failed with error: \(transaction.error)")
}
}
}
非常感谢您对此提供的任何帮助,因为 Apple 支持只能为我提供非技术支持,而且我已经在这个应用程序中投入了大量资源,只是到最后一步才能完成。
谢谢
【问题讨论】:
-
我想我基本上只需要继续登录队列中的每个事务,因为它终于起作用了......但我很好奇是否有人对是否可以改进此代码有任何反馈。还有谁知道我是否应该为最终产品的后期测试删除这个或任何东西?
标签: ios swift xcode in-app-purchase app-store-connect