我有一个带有某些应用程序内产品的Android应用程序。用户购买应用程序内产品,并且该应用将解锁相应的功能。现在我有一个问题:我阅读了Google文档,似乎不是我问题的确定答案:
该应用程序在启动时检索可用应用程序内产品的列表,然后继续检索购买的应用内产品列表。如果应用程序内产品显示在可用列表中,则我将解锁该功能。
为什么我检查启动时可用的应用内产品列表?
因为我需要在UI(购买按钮)上写入价格,并且我不想为不同国家/地区的所有可能价格进行硬编码。该响应具有所有可用的应用内产品的列表,以及已经本地化的价格,因此非常方便
为什么我在启动时检查购买的应用程序内产品列表?
因为我想检查用户是否购买了应用程序内产品,然后我在UI上解锁了功能。Google文档说该电话不需要互联网连接,所以为什么不呢?当我刚打电话给当地的Google Play API时,为什么还要打扰当地的APP内JSON产品?
现在我的问题是:对可用的应用程序内产品的呼叫,并且对购买产品的调用可能会失败……实际上一次失败了。如果失败,我该怎么办?将功能保留为禁用是一种选择,因为用户可能认为他/她丢失了产品。启用功能也是一个禁忌,因为我可以为从未购买产品的人启用功能。所以我卡住了。重试了吗?这里最好的做法是什么?
据我了解:
用户购买了一个应用程序内产品,该产品启用了您的应用程序的高级版本。购买后,启用该功能不需要进一步购买。所以这是一次性购买。
解决您的问题:
目前,您始终尝试使用Google API在应用程序开始时获得高级功能的状态。
您也可以这样做:如果用户购买了高级功能,请将其保存为共享Preference。示例:premiumversion = true
每当用户返回并且应用程序启动时,您都可以首先检查共享Preference,因为这不太可能失败(无需Internet连接等)。如果Premiumversion == true,则不要向Google API询问当前状态。仅使用Google API,如果Premiumversion == false。在这种情况下,以前的尝试可能失败了,或者用户只是没有高级功能。
旁注:如果premiumversion == true,请确保您永远不会用false!
覆盖它用于显示价格:
如果试图检索产品时出现任何问题,只需向用户提示一条错误的消息,他应该重试。
您可以简单地使用fire-base登录&带有字段premium_enabled的实时数据库 - true/false(如果用户使用旧的Google ID用于Play -etore,这将有所帮助)
)步骤明智
- 在您的应用中添加Google登录。
在fire-base user_id/email_id和premium_enabled字段中输入用户,并将数据存储在其中。(您可以根据需要添加字段)
如果用户购买的是输入 premium_enabled- true&还使用共享偏好对离线检查