【问题标题】: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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-28
        • 2012-06-16
        • 2013-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多