这个代码是苹果开发者网站上提供的,当用户点击促销应用商店产品时它会告诉我们检查是否可以完成交易?我该如何检查呢?因为那时我必须迎合交易失败或推迟,似乎无法弄清楚如何做到这一点。
//MARK: - SKPaymentTransactionObserver
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment,
forProduct product: SKProduct) -> Bool {
// Check to see if you can complete the transaction.
// Return true if you can.
return true
}
还有我必须满足的下一个场景,我发现与检查交易是否可以完成的场景相同
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment,
forProduct product: SKProduct) -> Bool {
// ... Add code here to check if your app must defer the transaction.
let shouldDeferPayment = ...
// If you must defer until onboarding is completed, then save the payment and return false.
if shouldDeferPayment {
self.savedPayment = payment
return false
}
// ... Add code here to check if your app must cancel the transaction.
let shouldCancelPayment = ...
// If you must cancel the transaction, then return false:
if shouldCancelPayment {
return false
}
}
// (If you canceled the transaction, provide feedback to the user.)
// Continuing a previously deferred payment
SKPaymentQueue.default().add(savedPayment)
)
如何检查付款是否失败或需要延期付款,还是可以按照代码部分中的说明完成付款?
答案 0 :(得分:3)
交易是否需要延期取决于您的应用以及您的应用可能具有的任何要求。
例如,假设您的应用要求用户在购买订阅之前设置帐户。
如果用户在App Store中开始购买,则在启动应用程序完成购买后,系统会调用shouldAddStorePayment
方法。
此时您可能会发现用户没有在您的应用中设置帐户(实际上,由于他们点击了提升的IAP,因此可能已经安装了该应用)。在这种情况下,您将从false
返回shouldAddStorePayment
,因为您的应用无法完成购买。
然后,您的应用会继续正常的入职流程,让用户建立自己的帐户。
帐户成立后,您想完成购买;这既是良好的用户体验,也确保您不会错过任何促销活动。
这是您问题中的其他示例代码所在的位置;它显示了如何保存付款并在以后阶段启动购买。
总之,当调用shouldAddStorePayment
时:
false
,否则返回true
false
,请保存购买详细信息,以便您可以在以后阶段启动购买,此时可以解决阻止购买的任何问题。