Флаттер: как настроить не расходуемые покупки? - PullRequest
2 голосов
/ 07 ноября 2019

Я хочу настроить в своем приложении покупку без расходных материалов. Я нашел много учебников о покупках расходных материалов, но, к сожалению, я не нашел ни одной статьи о расходных материалах.

Я пытался использовать пакет in_app_purchase, но он не работал.

 final String testIdAdvanced = 'advanced_training';
 InAppPurchaseConnection _iap = InAppPurchaseConnection.instance;
 bool _available = true;
 List<ProductDetails> advancedProducts = [];
 List<ProductDetails> advancedPurchases = [];
 StreamSubscription _subscription;

 void _initialize() async {
   _available = await _iap.isAvailable();

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

   }
 }

 Future<void> _getProducts() async {
   Set<String> ids = Set.from([testIdAdvanced, 'test_a']);
   ProductDetailsResponse response = await _iap.queryProductDetails(ids);

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

 // Gets previous purchases
 Future<void> _getPastPurchases() async {
   QueryPurchaseDetailsResponse response =
   await _iap.queryPastPurchases();
   for (PurchaseDetails purchase in response.pastPurchases) {
     if (Platform.isIOS) {
       InAppPurchaseConnection.instance.completePurchase(purchase);
     }
   }
   setState(() {
     advancedPurchases = response.pastPurchases.cast<ProductDetails>();
   });
 }
 void _buyProduct(ProductDetails prod) {
   final PurchaseParam purchaseParam = PurchaseParam(productDetails: prod);
   _iap.buyNonConsumable(purchaseParam: purchaseParam);
 }
...