代码之家  ›  专栏  ›  技术社区  ›  Astrum

Storekit Appstore购买促销

  •  5
  • Astrum  · 技术社区  · 8 年前

    当用户点击促销app store产品时,苹果开发者网站上给出的代码告诉用户检查是否可以完成交易?我该怎么检查呢?因为如果交易失败或延期,我必须考虑,而且似乎不知道怎么做。

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

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

    1 回复  |  直到 8 年前
        1
  •  9
  •   Paulw11    8 年前

    交易是否需要延期完全取决于你的应用程序以及你的应用程序可能具有的任何要求。

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

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

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

    然后,你的应用程序将继续正常的登录过程,让用户建立自己的帐户。

    账户建立后,您希望完成购买;这既是一种良好的用户体验,又能确保您不会错过销售。

    这就是问题中的其他示例代码所在;它显示了如何保存付款并在稍后阶段启动购买。

    总之,当 应该付款吗 被称为:

    1. 确定是否有某些原因导致您现在无法完成购买
    2. 如果有,返回 错误 ,否则返回 true
    3. 如果你回来 错误 ,保存购买详细信息,以便您可以在以后解决任何阻碍购买的问题时启动购买。