我有一个Android应用程序,其中包含一些应用内商品。用户购买应用内商品,该应用可解锁相应的功能。现在我有一个问题:我阅读了Google文档,似乎并不是我问题的明确答案:
该应用程序在启动时检索可用的应用内商品列表,然后继续检索已购买的应用内商品列表。如果应用内商品显示在可用列表中,则会解锁该功能。
为什么我在启动时查看可用的应用内商品列表?
因为我需要在UI上写下价格(购买按钮),我不想硬编码不同国家的所有可能价格。该响应包含所有可用的应用内商品列表以及已经本地化的价格,因此非常方便
为什么我在启动时查看已购买的应用内商品列表?
因为我想检查用户是否购买了应用内商品,然后我解锁了用户界面上的功能。谷歌的文件说,这个电话不需要互联网连接,为什么不呢?当我打电话给当地的Google Play API时,为什么还要在本地保存应用内JSON产品?
现在我的问题是:对可用的应用内商品的调用以及对购买的产品的调用可能会失败......实际上它失败了一次。如果失败了我该怎么办?保持禁用功能不是一种选择,因为用户可能认为他/她丢失了产品。启用这些功能也是禁忌,因为我可以为从未购买产品的人启用功能。所以我被卡住了。重试够了吗?这里最好的做法是什么?
答案 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商店的另一部手机,这将有所帮助)
一步一步
在fire-base user_id / email_id和premium_enabled字段中输入用户条目并在其中存储数据。 (您可以根据自己的要求添加字段)
如果用户购买而不是进入 premium_enabled - true&还使用共享首选项进行离线检查