0

一切都在 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以避免边缘情况

4

2 回答 2

1

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

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

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

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

于 2021-09-12T12:22:39.863 回答
0

我在 repo 上开了一张票,它在 1.0.9 版上被修复: https ://github.com/flutter/flutter/issues/89950

于 2021-10-01T16:11:08.710 回答