如何检索应用内购买并解锁我应用的高级版本?

时间:2017-11-24 11:12:03

标签: android mobile google-play in-app-purchase in-app

我有一个Android应用程序,其中包含一些应用内商品。用户购买应用内商品,该应用可解锁相应的功能。现在我有一个问题:我阅读了Google文档,似乎并不是我问题的明确答案:

该应用程序在启动时检索可用的应用内商品列表,然后继续检索已购买的应用内商品列表。如果应用内商品显示在可用列表中,则会解锁该功能。

为什么我在启动时查看可用的应用内商品列表?

因为我需要在UI上写下价格(购买按钮),我不想硬编码不同国家的所有可能价格。该响应包含所有可用的应用内商品列表以及已经本地化的价格,因此非常方便

为什么我在启动时查看已购买的应用内商品列表?

因为我想检查用户是否购买了应用内商品,然后我解锁了用户界面上的功能。谷歌的文件说,这个电话不需要互联网连接,为什么不呢?当我打电话给当地的Google Play API时,为什么还要在本地保存应用内JSON产品?

现在我的问题是:对可用的应用内商品的调用以及对购买的产品的调用可能会失败......实际上它失败了一次。如果失败了我该怎么办?保持禁用功能不是一种选择,因为用户可能认为他/她丢失了产品。启用这些功能也是禁忌,因为我可以为从未购买产品的人启用功能。所以我被卡住了。重试够了吗?这里最好的做法是什么?

2 个答案:

答案 0 :(得分:1)

据我所知:

用户购买的应用内商品可启用应用的高级版本。购买后,无需进一步购买即可启用此功能。所以这是一次性购买。

解决您的问题:

目前,您总是尝试使用Google API在应用开始时获取高级功能的状态。

你也可以这样做: 如果用户购买高级功能,请将其另存为SharedPreference。 示例:premiumVersion = true

每当用户返回并且应用程序启动时,您可以先检查SharedPreference,因为这不太可能失败(不需要互联网连接等)。如果premiumVersion == true,则不要向Google API询问当前状态。如果premiumVersion == false,则仅使用Google API。在这种情况下,之前的尝试可能已失败,或者用户只是没有高级功能。

旁注:如果premiumVersion == true,请确保永远不要用false覆盖它!

用于显示价格:

如果在尝试检索您的产品时出现任何问题,只需向用户提示错误消息,并显示错误消息,然后重试。

答案 1 :(得分:0)

你可以简单地使用Fire-base login&带有字段premium_enabled的实时数据库 - 真/假(如果用户使用旧版谷歌ID为Play商店的另一部手机,这将有所帮助)

一步一步

  1. 在您的应用中添加Google登录信息。
  2. 在fire-base user_id / email_id和premium_enabled字段中输入用户条目并在其中存储数据。 (您可以根据自己的要求添加字段)

    如果用户购买而不是进入       premium_enabled - true&还使用共享首选项进行离线检查