Flutter:获取过去在 Android 上的购买记录
Posted
技术标签:
【中文标题】Flutter:获取过去在 Android 上的购买记录【英文标题】:Flutter: get past purchases on Android 【发布时间】:2021-11-06 12:49:34 【问题描述】:我正在重构 in_app_purchases
并试图获取过去的购买记录。根据文档:
InAppPurchaseConnection.queryPastPurchases 方法已 删除。相反,您应该使用 InAppPurchase.restorePurchases。这 方法在 在AppPurchase.purchaseStream 中,PurchaseDetails 对象将是 标记为 PurchaseStatus.restored 的状态
但他们提供的示例并没有获取过去的购买记录,而是添加了您当时购买的那个。
我是从这里搬过来的:
final QueryPurchaseDetailsResponse purchaseResponse =
await _connection.queryPastPurchases();
到这里:
final Stream<List<PurchaseDetails>> purchaseUpdated = inAppPurchase.purchaseStream;
print(purchaseUpdated.toList());
我尝试了上述方法,但列表为空,并且可以肯定我的用户已经购买了,当我尝试购买之前购买的相同版本时,我可以在此处显示:
如何从以前的购买中获得List
?
【问题讨论】:
【参考方案1】:您必须将listen
转换为purchaseStream
,例如示例中的this code:
final Stream<List<PurchaseDetails>> purchaseUpdated =
_inAppPurchase.purchaseStream;
_subscription = purchaseUpdated.listen((purchaseDetailsList)
_listenToPurchaseUpdated(purchaseDetailsList);
, onDone: ()
_subscription.cancel();
, onError: (error)
// handle error here.
);
所有购买的商品都将添加到此流中,因此您需要将所有结果添加到您的列表中,如下所示:
final List<PurchaseDetails> purchasedList = [];
final Stream<List<PurchaseDetails>> purchaseUpdated =
_inAppPurchase.purchaseStream;
_subscription = purchaseUpdated.listen((purchaseDetailsList)
purchasedList.addAll(purchaseDetailsList);
, onDone: ()
_subscription.cancel();
, onError: (error)
// handle error here.
);
现在您可以使用purchasedList
作为以前的购买。顺便说一句,所有新购买的物品也将添加到该流和purchasedList
。
更新:完成上述步骤后,您需要致电_inAppPurchase.restorePurchases()
获取之前的购买,所有之前的购买将由purchaseStream
添加到purchasedList
。
【讨论】:
我也试过了,但是当我声明它时它没有进入。它列出了未来的购买,我需要得到以前的purchaseStream
将收听this@Dani 中提到的先前和未来的购买
顺便说一句,你知道我该如何等待购买吗?我不知道如何使该功能异步
我的意思是,我知道它是一个 Stream,但是当应用程序加载执行其他操作时,我需要从 Future 获取过去的购买,就像我之前使用旧版本的包所做的那样:等待this.inAppPurchase.queryPastPurchases();
您可以查看您的帖子。我已经回答了。以上是关于Flutter:获取过去在 Android 上的购买记录的主要内容,如果未能解决你的问题,请参考以下文章
在flutter中从image_picker包中打开相机会导致真实设备上的应用程序崩溃,但在模拟器(android)中运行良好
Flutter MediaQuery获取屏幕信息以及屏幕适配
如何在 Flutter 中删除 MaterialApp 上的 Android 后退按钮?
`未解决的参考:新的 Flutter 项目上的 android`