Ios 在Flatter中使用restorePurchases查找已购买的订阅
我正在我的Flatter应用程序中使用Ios 在Flatter中使用restorePurchases查找已购买的订阅,ios,flutter,in-app-purchase,in-app-subscription,Ios,Flutter,In App Purchase,In App Subscription,我正在我的Flatter应用程序中使用应用程序内购买:^1.0.1,以实现订阅的应用程序内购买。我曾经成功地购买过一次订阅,但是当我尝试使用restorepources()获取用户已经购买的订阅时,我会得到一个每次长度都会增加的列表。看起来有重复购买同一产品是不可能的 这是我的密码 _processIAP() async { Stream purchaseUpdated = InAppPurchase.instance.purchaseStream; _subscription
应用程序内购买:^1.0.1
,以实现订阅的应用程序内购买。我曾经成功地购买过一次订阅,但是当我尝试使用restorepources()
获取用户已经购买的订阅时,我会得到一个每次长度都会增加的列表。看起来有重复购买同一产品是不可能的
这是我的密码
_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);
}
每次我重新启动应用程序并重试时,长度6都会不断增加。此外,我不允许执行buynconsummable
以及restorepourchaes
。它会导致一个错误,指示需要标记为已完成的挂起事务
非常感谢您的帮助