Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/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
Flutter 颤振:如何设置非消耗品采购?_Flutter_Google Play_App Store_Payment Processing - Fatal编程技术网

Flutter 颤振:如何设置非消耗品采购?

Flutter 颤振:如何设置非消耗品采购?,flutter,google-play,app-store,payment-processing,Flutter,Google Play,App Store,Payment Processing,我想在我的应用程序中设置非消费品购买。我找到了很多关于消费品购买的教程,但不幸的是,我没有找到任何关于非消费品的文章 我尝试使用in_app_购买软件包,但不起作用 final String testIdAdvanced = 'advanced_training'; InAppPurchaseConnection _iap = InAppPurchaseConnection.instance; bool _available = true; List<ProductDetails&

我想在我的应用程序中设置非消费品购买。我找到了很多关于消费品购买的教程,但不幸的是,我没有找到任何关于非消费品的文章

我尝试使用in_app_购买软件包,但不起作用

 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);
 }
final String testIdAdvanced='advanced_training';
InAppPurchaseConnection _iap=InAppPurchaseConnection.instance;
bool_available=true;
列出高级产品=[];
列出高级采购=[];
流动认购(流动认购);;
void\u initialize()异步{
_可用=等待_iap.isAvailable();
如果(_可用){
等待_getProducts();
等待_getPastPurchases();
}
}
Future\u getProducts()异步{
Set id=Set.from([testIdAdvanced,'test_a']);
ProductDetailsResponse-response=等待iap.queryProductDetails(ID);
设置状态(){
advancedProducts=response.productDetails;
});
}
//获取以前的购买
Future\u getPastPurchases()异步{
QueryPurchaseDetails响应=
等待_iap.queryPastPurchases();
for(响应中的PurchaseDetails购买。pastPurchases){
if(Platform.isIOS){
InAppPurchaseConnection.instance.completePurchase(采购);
}
}
设置状态(){
advancedPurchases=response.pastPurchases.cast();
});
}
void\u购买产品(产品详细信息产品){
最终PurchaseParam PurchaseParam=PurchaseParam(产品详细信息:产品);
_iap.BuyUnconsummable(purchaseParam:purchaseParam);
}

你说的“不工作”是什么意思?有错误信息吗?