如何解决Flutter in_app_purchase queryPastPurchases在iOS上返回空列表
原来代码没有错。
为了使其工作,我必须创建一个沙箱用户。然后,我不得不从手机上当前登录的AppID中注销。然后,我必须在Xcode中从发布到调试使用“编辑方案”。然后我在终端运行了“ flutter run”。然后,我购买了NonConsumable订阅,然后在对话框中,必须输入沙盒用户的电子邮件和密码。
此外,我还必须在App Store
Connect中创建一个全新的订阅,因为原始订阅处于无法购买或购买的状态。这是由于completePurchase
在我的代码中的错误位置进行了操作。它不应该在中完成_getPastPurchases()
,而是在实际的购买逻辑中完成。
所以放在completePurchase
这里:
_subscription = _iap.purchaseUpdatedStream.listen((data) => setState(() {
_purchases.addAll(data);
for(PurchaseDetails purchase in _purchases){
if(purchase.productID == 'subName'){
//SOLUTION
if (Platform.isIOS) {
InAppPurchaseConnection.instance.completePurchase(purchase);
}
}
}
}));
PS:我不记得我是否在for循环中或外部有completePurchse …
解决方法
为什么queryPastPurchases()在Android上返回带有我的订阅的填充列表,而在iOS上返回空列表?
我有一台物理的iOS SE手机,我的苹果用户在testflight中被添加为测试人员,我已经在App Store
Connect中添加了一个订阅,并且能够购买该订阅(在testflight中)。但是queryPastPurchases()返回一个空列表…
// Gets past purchases
Future<void> _getPastPurchases() async {
QueryPurchaseDetailsResponse response =
await _iap.queryPastPurchases();
for (PurchaseDetails purchase in response.pastPurchases) {
if (Platform.isIOS) {
InAppPurchaseConnection.instance.completePurchase(purchase);
}
}
setState(() {
_purchases = response.pastPurchases;
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。