这段代码是苹果开发者网站上给出的,当用户点击促销应用商店产品时,它告诉我们检查是否可以完成交易?我该如何检查呢?因为那时我必须满足交易是否失败或推迟的问题,而且似乎无法弄清楚该怎么做。
//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)
)
我如何检查付款是否失败或需要延期或是否可以按照代码部分中的说明完成?
最佳答案
是否需要延迟交易完全取决于您的应用以及您的应用可能有的任何要求。
例如,假设您的应用要求用户在购买订阅之前先设置一个帐户。
如果用户在 App Store 中开始购买,shouldAddStorePayment
方法将在您的应用启动后调用以完成购买。
此时您可能会检测到用户尚未在您的应用中设置帐户(实际上,该应用可能是由于他们点击了推广的 IAP 而安装的)。在这种情况下,您将从shouldAddStorePayment
返回false
,因为您的应用无法完成购买。
然后您的应用将继续其正常的登录流程,让用户建立他们的帐户。
建立帐户后,您想要完成购买;这既是一种良好的用户体验,又能确保您不会错过任何促销事件。
这是您问题中的其他示例代码的来源;它显示了如何保存付款并在稍后阶段开始购买。
总而言之,当 shouldAddStorePayment
被调用时:
- 确定是否有某些原因导致您现在无法完成购买
- 如果存在,返回
false
,否则返回true
- 如果您返回
false
,请保存购买详细信息,以便您可以在稍后阶段解决阻止购买的任何问题后开始购买。
关于ios - Storekit Appstore 购买促销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49550661/