如何获取用户的当前订阅状态,以验证订阅仍然有效?

时间:2020-04-13 09:58:06

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

我正在构建使用免费增值模式的Flutter应用程序。

我在我的应用程序中使用了in_app_purchase flutter软件包,因此用户现在可以升级到按月付费。阅读完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:获取,它会检查用户的订阅购买是否有效,并返回其到期时间(https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get)-但我不确定如何实际执行此操作。 您如何实现这一目标?

在此先感谢您的帮助!

Jason

1 个答案:

答案 0 :(得分:3)

此后,我找到了一个很好的解决方案。最后,我只使用了RevenueCat。它处理一切。您甚至不需要使用Google发布/订阅或实时开发者通知。这么简单!这是文档: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
}

希望这个答案对以后的人有帮助-一旦我弄清楚了,它就节省了我很多工作和时间!