是否需要有恢复码paymentQueueRestoreCompletedTransactionsFinished()?
Is it necessary to have restore code paymentQueueRestoreCompletedTransactionsFinished()?
我想正确实现恢复以前购买的 IAP 的功能,但是,我已经阅读了一些相互冲突的方法,现在我很困惑。
我在沙箱中使用的方法是从 paymentQueue() 恢复,就像这样..
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
case .restored:
defer {
queue.finishTransaction(transaction)
}
if let productIdentifier = transaction.original?.payment.productIdentifier {
unlockProduct(withIdentifier: productIdentifier)
}
}
我刚刚在 paymentQueueRestoreCompletedTransactionsFinished() 中有一个警报。其他一些方法在那里有恢复代码,但我认为他们不应该。
我这样做是否正确,我是如何做到的,是一种可以在沙盒环境之外工作的正确方法吗?
谢谢。
您不需要实施 paymentQueueRestoreCompletedTransactionsFinished
。正如您所注意到的,这不是实际恢复已完成交易的地方。
我建议您考虑在用户点击 "Restore" 按钮时提供适当的用户反馈;恢复交易可能需要一些时间,因此您可能需要考虑显示一个 activity 微调器或其他 UI 元素来指示正在进行恢复。 paymentQueueRestoreCompletedTransactionsFinished
是你应该删除这个 UI 的地方。
您还可以跟踪是否实际恢复了任何购买,然后在此功能中显示适当的消息。例如"No purchases were found" 或“已恢复 3 笔购买”
我想正确实现恢复以前购买的 IAP 的功能,但是,我已经阅读了一些相互冲突的方法,现在我很困惑。
我在沙箱中使用的方法是从 paymentQueue() 恢复,就像这样..
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
case .restored:
defer {
queue.finishTransaction(transaction)
}
if let productIdentifier = transaction.original?.payment.productIdentifier {
unlockProduct(withIdentifier: productIdentifier)
}
}
我刚刚在 paymentQueueRestoreCompletedTransactionsFinished() 中有一个警报。其他一些方法在那里有恢复代码,但我认为他们不应该。
我这样做是否正确,我是如何做到的,是一种可以在沙盒环境之外工作的正确方法吗?
谢谢。
您不需要实施 paymentQueueRestoreCompletedTransactionsFinished
。正如您所注意到的,这不是实际恢复已完成交易的地方。
我建议您考虑在用户点击 "Restore" 按钮时提供适当的用户反馈;恢复交易可能需要一些时间,因此您可能需要考虑显示一个 activity 微调器或其他 UI 元素来指示正在进行恢复。 paymentQueueRestoreCompletedTransactionsFinished
是你应该删除这个 UI 的地方。
您还可以跟踪是否实际恢复了任何购买,然后在此功能中显示适当的消息。例如"No purchases were found" 或“已恢复 3 笔购买”