iOS 11/10上的应用购买结果不一致

时间:2017-10-13 19:33:31

标签: ios swift in-app-purchase

在我的应用程序的早期版本中,我在应用程序购买(IAP)工作正常。在我的最新版本中,我发现用户向我报告了一些奇怪的不一致。

IAP只允许访问" Pro"该应用程序版本可删除广告,并允许用户在应用程序背景下播放音频文件。

问题: 用户可以在应用程序中成功购买IAP。他们收到消息,说明购买成功。但是,当他们重新启动应用程序时(按照成功购买UIAlert的指示),Pro功能未解锁。

当用户然后使用"恢复购买"按钮,他们收到一条错误消息,指出"无法恢复"基本上告诉他们他们没有购买任何东西。

有趣的是,如果他们再次按下购买按钮,那么他们会被告知他们已经购买了IAP并且可以免费重新下载。同样,这并不能解锁Pro功能。

举报案例 我已经向我报告了很多这个问题的案例。 iOS 10和11上的用户都遇到过此问题。但是,iOS 11和10上的其他用户也可以毫无问题地购买升级版。所以我对导致问题的原因感到有些困惑。

工具 我使用SwiftyStoreKit 0.10.5来管理我的IAP。我使用Swift 4在Xcode 9.0上。

以下是我用来购买和恢复购买的代码。

出于安全原因,我用***覆盖了我的bundleID,因为我不知道可以用它做什么。

// Purchase Product
func purchase(purchase: RegisteredPurchases) {
    NetworkActivityIndicatorManager.NetworkOperationStarted()
    SwiftyStoreKit.purchaseProduct(bundleID + "." + purchase.rawValue, completion: {
        result in
        NetworkActivityIndicatorManager.NetworkOperationFinished()

        if case .success(let product) = result {

            if product.productId == "com.************.RemoveAds" {

                self.defaults.set(true, forKey: "NoAds")

            }

            if product.needsFinishTransaction {

                SwiftyStoreKit.finishTransaction(product.transaction)
            }


            self.showAlert(alert: self.alertForPurchaseResult(result: result))

        }

    })

}

// Restore Purchases
func restorePurchases() {
    NetworkActivityIndicatorManager.NetworkOperationStarted()
    SwiftyStoreKit.restorePurchases(atomically: true,  completion: {
        result in
        NetworkActivityIndicatorManager.NetworkOperationFinished()

        for product in result.restoredPurchases {

            if product.needsFinishTransaction {

                SwiftyStoreKit.finishTransaction(product.transaction)
            }

            if product.productId == "com.************.RemoveAds" {

                self.defaults.set(true, forKey: "NoAds")

            }

            print(product.productId)
            self.defaults.set(true, forKey: "\(product.productId)")


        }

        self.showAlert(alert: self.alertForRestorePurchases(result: result))

    })

}

有关这可能是什么原因的任何信息我都会非常感激。因为我目前在原因上有点失落。

谢谢!

0 个答案:

没有答案