【问题标题】:How to get the current subscription status of the user, to validate that the subscription is still valid?如何获取用户当前的订阅状态,验证订阅是否仍然有效?
【发布时间】:2020-07-25 20:44:31
【问题描述】:

我正在构建一个使用免费增值模式的颤振应用程序。

我在我的应用中使用 in_app_purchase 软件包,因此用户现在可以升级到按月付费订阅。在阅读文档https://developer.android.com/google/play/billing/billing_subscriptions#Handle-states 以添加特定于订阅的功能后,它说“您还应该启用实时开发人员通知”,我现在已经这样做了。

根据此视频 (https://www.youtube.com/watch?v=9Ta2chg_Ak4),只要现有订阅有更新,我就会直接从 Cloud Pub/Sub 收到购买令牌。此购买令牌不包含更改的详细信息。因此,我需要将购买令牌从我的安全后端发送到 Google Play 开发人员 API,以获取附加到购买令牌的更新信息。验证后,我将获得有关订阅的修订信息,这些信息可以存储在我的后端服务器上,并在需要时发送到我的 Android 应用程序,以确保用户可以访问适当的应用程序内内容和服务。

我使用 Cloud Firestore 作为应用程序的后端。

我的问题是:如何获取用户当前的订阅状态,以验证订阅是否仍然有效?我认为我需要使用 Purchases.subscriptions: get,它检查用户的订阅购买是否有效并返回其到期时间(https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get) - 但我不确定如何实际执行此操作。 如何在 Flutter 中实现这一点?

提前感谢您的帮助!

杰森

【问题讨论】:

    标签: flutter google-cloud-firestore in-app-purchase google-cloud-pubsub google-play-developer-api


    【解决方案1】:

    我已经找到了一个很好的解决方案。最后,我只使用了 RevenueCat。它处理一切。您甚至不需要使用 Google Pub/Sub 或实时开发者通知。容易多了!这是文档:https://docs.revenuecat.com/docs

    设置完成后,这很简单,我只需使用:

    try {
      PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo();
      if (purchaserInfo.entitlements.all["my_entitlement_identifier"].isActive) {
        // Grant user "pro" access
      }
    } catch (e) {
      // Error fetching purchaser info
    }
    

    希望这个答案对将来的某人有所帮助 - 一旦我想通了,它就为我节省了很多工作和时间!

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2017-09-10
      • 2021-02-01
      • 2019-07-21
      • 2020-02-23
      • 2015-01-27
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      相关资源
      最近更新 更多