【问题标题】:Know the trigger when user has pressed cancel buttons during In-App purchase了解用户在应用内购买期间按下取消按钮时的触发器
【发布时间】:2020-08-22 08:13:43
【问题描述】:
我在 Flutter 应用中集成了 IAP 功能。我想知道用户何时点击了 IAP 弹出窗口上的“取消”按钮。
在这里找到了许多解决方案,但所有代码都是本机代码。
如果我在 Flutter iOS 中触发取消按钮单击,这将非常有帮助。
在取消按钮上单击我需要执行其他功能。
我已按照此链接中的 IAP 集成代码进行操作:
https://fireship.io/lessons/flutter-inapp-purchases/
并且 IAP 弹出窗口显示为默认弹出窗口而不是自定义窗口。
请给点建议。任何帮助,将不胜感激。
谢谢。
【问题讨论】:
标签:
ios
flutter
in-app-purchase
【解决方案1】:
我创建了一个循环来查找失败的事务,然后相应地完成它们。
我仍在尝试在哪里执行此操作以避免用户错误。我还将尝试在处理购买的流侦听器中执行类似的过程。
IAP 插件中包含 StoreKit Wrappers:
注意:我查看了 XCode 的 SK 信息,对于失败的事务执行此操作似乎很好。他们说对未决的人这样做是“不可以”。
Future<Null> _removeFailedPendingPurchases() async {
debugPrint(':::: SWIPE WAR ::::: _removeFailedPendingPurchases()');
final SKPaymentQueueWrapper paymentWrapper = SKPaymentQueueWrapper();
final List<SKPaymentTransactionWrapper> transactions =
await paymentWrapper.transactions();
debugPrint(
':::: SWIPE WAR ::::: transactions ${transactions.length} ${transactions.toString()}');
for (SKPaymentTransactionWrapper transaction in transactions) {
debugPrint('TRANSACTION everything : ${transaction.toString()}');
debugPrint('TRANSACTION STATE : ${transaction.transactionState}');
if (transaction.transactionState ==
SKPaymentTransactionStateWrapper.failed)
await paymentWrapper.finishTransaction(transaction);
}
return;
}
【解决方案2】:
当您按下取消按钮时,PurchaseDetails.status 将等于 PurchaseStatus.error。所以你检查一下:
if (purchaseDetails.status == PurchaseStatus.error) {
//Change UI state to reflect this problem
}