【问题标题】:Flutter in app purchase queryPastPurchses BillingResponse.serviceDisconnected errorFlutter 在应用购买查询PastPurchses BillingResponse.serviceDisconnected 错误
【发布时间】:2021-06-19 20:13:55
【问题描述】:

我想检查用户是否购买了去除广告的非消耗品。
所以当应用程序启动时(启动活动),我在下面运行代码。

@override
  void initState() {
    _checkPurchasedItem();
    super.initState();
  }

_checkPurchasedItem() async {
    _preferences = await SharedPreferences.getInstance();

    InAppPurchaseConnection _iap = InAppPurchaseConnection.instance;
    final QueryPurchaseDetailsResponse response = await _iap.queryPastPurchases();

    if(response.error != null) {
      debugPrint("splash: check purchased item error");
      debugPrint("error: " + response.error.message);
      debugPrint("error: " + response.error.code);
      debugPrint("error: " + response.error.details.toString());
      return;
    }
    for (PurchaseDetails details in response.pastPurchases) {
      if (details.productID == nonConsumableID || details.productID == IOSNonConsumableID) {
        _preferences.setBool("removeAd", true);
        debugPrint("splash: remove ad");
      } else {
        _preferences.setBool("removeAd", false);
        debugPrint("splash: not remove ad");
      }
    }
  }

但是,在if(response.error != null) 中确实有错误。
消息是BillingResponse.serviceDisconnected
代码是restore_transactions_failed
详细信息是null

为什么iap.quertPastPurchases() 返回错误?
是否有任何正确的方法可以检查用户是否购买了产品?

【问题讨论】:

  • 有解决办法吗?

标签: flutter in-app-purchase


【解决方案1】:

我找到了原因。
由于 response.pastPurchases.length 为 0,因此它从未迭代 for 循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    相关资源
    最近更新 更多