首页 > 解决方案 > Flutter:获取过去在 iOS 上的购买记录

问题描述

一切都在 Android 上运行in_app_purchasehttps://pub.dev/packages/in_app_purchase)的新实现,但在 iOS 上我没有过去的购买。按照文档,我没有看到任何特别之处。

我的代码是:

final Stream<List<PurchaseDetails>> purchaseUpdated =
          inAppPurchase.purchaseStream;

      _subscription = purchaseUpdated.listen((purchaseDetailsList) {
        if (purchaseDetailsList.isEmpty) {
          Provider.of<AdState>(context, listen: false).toggleAds(context, true);
        } else {
          Provider.of<AdState>(context, listen: false)
              .toggleAds(context, false);
          this.purchases.addAll(purchaseDetailsList);
          listenToPurchaseUpdated(purchaseDetailsList);
        }
      }, onDone: () {
        _subscription.cancel();
      }, onError: (error) {
        // handle error here.
      });

      inAppPurchase.restorePurchases();

它只是不进去,如果我尝试购买相同的产品,我会收到此错误:

同一产品标识符有一个待处理的交易。请等待它完成或手动完成它 completePurchase以避免边缘情况

标签: flutterin-app-purchaseflutter-in-app-purchase

解决方案


你需要打电话_inAppPurchase.completePurchase(purchase);来完成它。代码在这里:

if (purchase.pendingCompletePurchase) {
  _inAppPurchase.completePurchase(purchase);
}

您还需要在每次打开您的应用程序时调用它,以确保所有付款都已完成,这非常重要,记得purchase.pendingCompletePurchase在调用它之前检查。

顺便说一句,我更喜欢flutter_inapp_purchase那样in_app_purchase,因为我在 iOS 中也遇到了一些意想不到的问题。


推荐阅读