gpt4 book ai didi

Flutter in_app_purchase queryPastPurchases() 在 iOS 上返回空列表

转载 作者:IT王子 更新时间:2023-10-29 07:02:12 24 4
gpt4 key购买 nike

为什么 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;
});
}

最佳答案

事实证明代码没有任何问题。

为了让它工作,我必须创建一个沙箱用户。然后我不得不从手机上当前登录的 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:我不记得我的completePurchse是在for循环里还是在外面...

关于Flutter in_app_purchase queryPastPurchases() 在 iOS 上返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57353649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com