【问题标题】:Flutter in_app_purchase 0.2.1 purchaseUpdatedStream.listen not working on AndroidFlutter in_app_purchase 0.2.1 purchaseUpdatedStream.listen 在 Android 上不起作用
【发布时间】:2020-01-02 19:56:00
【问题描述】:

我可以在 Android 上购买订阅,订阅显示在 queryPastPurchases() 中,但购买产品后从未触发 _listenToPurchaseUpdated() 方法。我知道这是 Flutter in_app_purchase 以前版本中的一个错误,但据说在 0.2.1 中已修复。但是它似乎对我不起作用...我的代码有问题吗?

  /// The In App Purchase plugin
  InAppPurchaseConnection _iap = InAppPurchaseConnection.instance

  /// Updates to purchases
  StreamSubscription<List<PurchaseDetails>> _subscription;

  @override
  initState() {

    final Stream purchaseUpdates = InAppPurchaseConnection.instance.purchaseUpdatedStream;
    _subscription = purchaseUpdates.listen((purchases) {
      _purchases.addAll(purchases);
      _listenToPurchaseUpdated(_purchases);
    });

    super.initState();
  }

  /// Get all products available for sale
  Future<void> _getProducts() async {
    Set<String> ids = Set.from(['subscription_product']);
    ProductDetailsResponse response = await _iap.queryProductDetails(ids);

    setState(() {
      _products = response.productDetails;
    });

    if(response.error != null && response.error.message != null){
      setState(() {
        _iapStoreProblem = response.error.message;
      });
    }
  }

  void _buyProduct(ProductDetails prod) {
    final PurchaseParam purchaseParam = PurchaseParam(productDetails: prod);
    _iap.buyNonConsumable(purchaseParam: purchaseParam);
  }

【问题讨论】:

    标签: flutter in-app-purchase


    【解决方案1】:

    我找到了解决办法。

    原来我不得不使用

    StreamSubscription _subscription;

    而不是

    StreamSubscription<List<PurchaseDetails>> _subscription;
    

    然后:

    _subscription = _iap.purchaseUpdatedStream.listen((data) => setState(() {
        _purchases.addAll(data);
        _listenToPurchaseUpdated(data);
    }));
    
    
    void _listenToPurchaseUpdated(List<PurchaseDetails> purchaseDetailsList) {
        purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async {
          ...
        });
    }
    

    另外,请注意:Android 上的 PurchaseDetails.status 为 Null。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-14
      • 2019-06-30
      • 2021-07-07
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      相关资源
      最近更新 更多