Flutter Flitter in_app_purchase query在iOS上返回null

Flutter Flitter in_app_purchase query在iOS上返回null,flutter,in-app-purchase,Flutter,In App Purchase,为什么queryPastPurchase在iOS Testflight用户上返回null,而在Android上则是成功的 请帮我弄清楚 这是我的代码: ... InAppPurchaseConnection _iap = InAppPurchaseConnection.instance; @override initState() { _initialize(); super.initState(); } void _initialize() async

为什么queryPastPurchase在iOS Testflight用户上返回null,而在Android上则是成功的

请帮我弄清楚

这是我的代码:

...
InAppPurchaseConnection _iap = InAppPurchaseConnection.instance;

  @override
  initState() {
    _initialize();
    super.initState();
  }

    void _initialize() async {

    // Check availability of In App Purchases
    _available = await _iap.isAvailable();

    if (_available) {
      await _getProducts();
      await _getPastPurchases();
      _getSubscriptionPrice();
    }

    _subscription = _iap.purchaseUpdatedStream.listen((data) => setState(() {
      _purchases.addAll(data);

      for(PurchaseDetails purchase in _purchases){
        if(purchase.productID == 'subName'){
          setState(() {
            showSubscriptionDialog = false;
          });
        }
      }
      _verifyPurchase();
    }));
  }

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

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

    if(response.error != null && response.error.message.length > 0){
      _iapStoreProblem = response.error.message;
    }
  }

  /// Gets past purchases
  Future<void> _getPastPurchases() async {
    bool hasSub = false;
    QueryPurchaseDetailsResponse response = await _iap.queryPastPurchases();

    for (PurchaseDetails purchase in response.pastPurchases) {
      if (Platform.isIOS) {
        InAppPurchaseConnection.instance.completePurchase(purchase);
      }
    }

    setState(() {
      _purchases = response.pastPurchases;
    });

    for(PurchaseDetails purchase in _purchases){
      if(purchase.billingClientPurchase.sku == "subName"){
        hasSub = true;
      }
    }

    if(hasSub){
      setState(() {
        showSubscriptionDialog = false;
        firstTimeBuySub = false;
      });
    }else{
      setState(() {
        showSubscriptionDialog = true;
        firstTimeBuySub = true;
      });
    }
  }

你好,我现在也遇到了这个问题。你能找到工作吗?这能回答你的问题吗?