Sam*_*wal 5 in-app-purchase ios in-app-subscription flutter
我在 Flutter 应用程序中使用它in_app_purchase: ^1.0.1来实现应用程序内购买订阅。我已经成功购买了一次订阅,但是当我尝试使用restorePurchases()来获取用户已购买的订阅时,我得到的列表每次都会增加长度。看起来同一产品有重复购买,这是不可能的。
这是我的代码。
_processIAP() async {
Stream purchaseUpdated = InAppPurchase.instance.purchaseStream;
_subscription = purchaseUpdated.listen((purchaseDetailsList) {
print("purchaseDetailsList.length = " + purchaseDetailsList.length.toString());
purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async {
print(purchaseDetails.purchaseID + " " + purchaseDetails.pendingCompletePurchase.toString());
if (purchaseDetails.status == PurchaseStatus.pending) {
print("Purchase is still pending!");
} else {
if (purchaseDetails.status == PurchaseStatus.error) {
print("An error has occurred!");
} else if (purchaseDetails.status == PurchaseStatus.purchased || purchaseDetails.status == PurchaseStatus.restored) {
print("Purchased or restored successfully!");
await InAppPurchase.instance.completePurchase(purchaseDetails);
print("Purchase marked as completed");
}
if (purchaseDetails.pendingCompletePurchase) {
await InAppPurchase.instance.completePurchase(purchaseDetails);
print("Purchase marked as completed");
}
}
});
}, onDone: () {
print("DONE!");
_subscription.cancel();
}, onError: (error) {
print(error);
});
const Set<String> _kIds = <String>{'basic_monthly_apple'};
final ProductDetailsResponse response = await InAppPurchase.instance.queryProductDetails(_kIds);
if (response.notFoundIDs.isNotEmpty) {
print("Some product IDs not found!");
}
print("Restoring previous purchases!");
await InAppPurchase.instance.restorePurchases();
//PurchaseParam purchaseParam = PurchaseParam(productDetails: products[0]);
// InAppPurchase.instance.buyNonConsumable(purchaseParam: purchaseParam);
}
Run Code Online (Sandbox Code Playgroud)
在日志中,我发现purchaseDetailsList每次我在使用该restorePurchases()方法后尝试购买订阅时,其长度都会增加(增加 1)。每个purchaseDetail都有独特的purchaseID。此外,即使它们已被标记为已完成,pendingCompletePurchase所有的purchaseDetails也始终是。true
日志 -
Some product IDs not found!
flutter: Restoring previous purchases!
flutter: purchaseDetailsList.length = 6
flutter: 1000000819394740 true
flutter: Purchased or restored successfully!
flutter: 1000000819394741 true
flutter: Purchased or restored successfully!
flutter: 1000000819394742 true
flutter: Purchased or restored successfully!
flutter: 1000000819394743 true
flutter: Purchased or restored successfully!
flutter: 1000000819394744 true
flutter: Purchased or restored successfully!
flutter: 1000000819394745 true
flutter: Purchased or restored successfully!
flutter: Purchase marked as completed
flutter: Purchase marked as completed
flutter: Purchase marked as completed
flutter: Purchase marked as completed
flutter: Purchase marked as completed
flutter: Purchase marked as completed
Run Code Online (Sandbox Code Playgroud)
每次我重新启动应用程序并重试时,这个长度 6 都会不断增加。另外,我不被允许buyNonConsumable与 一起执行restorePurchases。它会导致错误,指示需要将待处理事务标记为已完成的某些信息。
非常感谢任何帮助。
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |