Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Flatter中使用restorePurchases查找已购买的订阅_Ios_Flutter_In App Purchase_In App Subscription - Fatal编程技术网

Ios 在Flatter中使用restorePurchases查找已购买的订阅

Ios 在Flatter中使用restorePurchases查找已购买的订阅,ios,flutter,in-app-purchase,in-app-subscription,Ios,Flutter,In App Purchase,In App Subscription,我正在我的Flatter应用程序中使用应用程序内购买:^1.0.1,以实现订阅的应用程序内购买。我曾经成功地购买过一次订阅,但是当我尝试使用restorepources()获取用户已经购买的订阅时,我会得到一个每次长度都会增加的列表。看起来有重复购买同一产品是不可能的 这是我的密码 _processIAP() async { Stream purchaseUpdated = InAppPurchase.instance.purchaseStream; _subscription

我正在我的Flatter应用程序中使用
应用程序内购买:^1.0.1
,以实现订阅的应用程序内购买。我曾经成功地购买过一次订阅,但是当我尝试使用
restorepources()
获取用户已经购买的订阅时,我会得到一个每次长度都会增加的列表。看起来有重复购买同一产品是不可能的

这是我的密码

_processIAP() async {
    Stream purchaseUpdated = InAppPurchase.instance.purchaseStream;
    _subscription = purchaseUpdated.listen((purchaseDetailsList) {
        print("purchaseDetailsList.length = " + purchaseDetailsList.length.toString());
        purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async {
        
        print(purchaseDetails.purchaseID + " " + purchaseDetails.pendingCompletePurchase.toString());

        if (purchaseDetails.status == PurchaseStatus.pending) {
            print("Purchase is still pending!");
        } else {
            if (purchaseDetails.status == PurchaseStatus.error) {
                print("An error has occurred!");
            } else if (purchaseDetails.status == PurchaseStatus.purchased || purchaseDetails.status == PurchaseStatus.restored) {
                print("Purchased or restored successfully!");

                await InAppPurchase.instance.completePurchase(purchaseDetails);
                print("Purchase marked as completed");
          }
          if (purchaseDetails.pendingCompletePurchase) {

                await InAppPurchase.instance.completePurchase(purchaseDetails);
                print("Purchase marked as completed");
          }
        }
      });
    }, onDone: () {
      print("DONE!");
      _subscription.cancel();
    }, onError: (error) {
      print(error);
    });

    const Set<String> _kIds = <String>{'basic_monthly_apple'};
    final ProductDetailsResponse response = await InAppPurchase.instance.queryProductDetails(_kIds);
    if (response.notFoundIDs.isNotEmpty) {
      print("Some product IDs not found!");
    }

    print("Restoring previous purchases!");
    await InAppPurchase.instance.restorePurchases();

    //PurchaseParam purchaseParam = PurchaseParam(productDetails: products[0]);
    // InAppPurchase.instance.buyNonConsumable(purchaseParam: purchaseParam);
}
每次我重新启动应用程序并重试时,长度6都会不断增加。此外,我不允许执行
buynconsummable
以及
restorepourchaes
。它会导致一个错误,指示需要标记为已完成的挂起事务

非常感谢您的帮助