【问题标题】:Storekit Appstore purchase promotionStorekit Appstore 购买促销
【发布时间】:2018-09-08 02:12:59
【问题描述】:

这个代码是苹果开发者网站上给出的,当用户点击促销应用商店产品时,它告诉检查是否可以完成交易?我该如何检查呢?因为如果交易失败或推迟并且似乎无法弄清楚如何做到这一点,我必须迎合。

//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)

  )

我如何检查付款是否失败或需要延期或是否可以按照代码部分中的说明完成?

【问题讨论】:

  • 我还在为如何检测交易是否需要推迟或取消以及如何在代码中编写它而摸不着头脑。有什么想法吗?
  • 您想在模拟器或应用内购买沙盒环境中测试延迟交易状态,对吧?
  • @SagarThummar 我想了解如何检查交易是否需要延迟或必须取消或可以购买(就像我的第二个代码部分的注释部分中所说的那样问题。我需要知道如何为它编写代码。(第二部分代码段来自苹果在其开发者网站上的 Promoting In-App Purchases,他们没有详细说明如何为注释部分编写代码。)

标签: ios swift storekit


【解决方案1】:

交易是否需要延迟完全取决于您的应用以及您的应用可能有的任何要求。

例如,假设您的应用要求用户在购买订阅之前设置一个帐户。

如果用户在 App Store 中开始购买,则在您的应用启动后会调用shouldAddStorePayment 方法完成购买。

此时您可能会检测到用户尚未在您的应用中设置帐户(实际上,该应用可能是由于他们点击了推广的 IAP 而安装的)。在这种情况下,您会从shouldAddStorePayment 返回false,因为您的应用无法完成购买。

然后,您的应用将继续其正常的登录流程,让用户建立他们的帐户。

一旦建立帐户,您就想完成购买;这既是良好的用户体验,又能确保您不会错过任何销售机会。

这是您问题中其他示例代码的来源;它显示了如何保存付款并在稍后阶段开始购买。

总之,当shouldAddStorePayment被调用时:

  1. 确定是否有某些原因导致您现在无法完成购买
  2. 如果有,返回false,否则返回true
  3. 如果您返回false,请保存购买详细信息,以便您可以在阻止购买的问题得到解决后开始购买。

【讨论】:

  • 好的,所以我的应用不需要创建帐户或类似的东西,所以我应该在该部分返回 true。如果他们按下从应用商店购买的应用并且该应用尚未下载,我应该返回 false 并保存它吗?还是只有在安装后启动应用程序时才会出现提示?感谢您的帮助。
  • 如果应用还没有下载,那么你什么也做不了;如果尚未安装,则您的应用程序未运行。安装您的应用后,它将启动并开始购买过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 2010-12-15
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2023-03-28
相关资源
最近更新 更多