如何检索应用内购买并解锁我的应用的高级版本?
How to retrieve in-app purchases and unlock premium version of my app?
我有一个 android 应用程序,其中包含一些应用程序内商品。用户购买应用内商品,应用解锁相应的功能。现在我有一个问题:我阅读了 Google 文档,但似乎并不是我的问题的明确答案:
应用在启动时检索可用的应用内商品列表,然后继续检索已购买的应用内商品列表。如果应用内商品出现在可用列表中,我就会解锁该功能。
为什么我在启动时检查可用的应用内商品列表?
因为我需要在 UI(购买按钮)上写下价格,而且我不想对不同国家/地区的所有可能价格进行硬编码。响应包含所有可用的应用内商品列表以及已经本地化的价格,因此非常方便
为什么我在启动时查看已购买的应用内商品列表?
因为我想检查用户是否购买了应用内商品,然后我解锁了 UI 上的功能。 Google 文档说调用不需要互联网连接,为什么不呢?当我只调用本地 Google 播放 API 时,为什么还要在本地保存应用内 JSON 产品?
现在我的问题是:调用可用的应用内商品和调用已购买的商品可能会失败...实际上失败了一次。如果失败我该怎么办?禁用这些功能不是一种选择,因为用户可能认为 he/she 丢失了产品。启用这些功能也是一个禁忌,因为我可能会为从未购买过产品的人启用这些功能。所以我卡住了。重试就够了吗?这里的最佳做法是什么?
据我了解:
用户购买了应用内商品,启用了您应用的高级版本。购买后,无需进一步购买即可启用该功能。所以是一次性购买。
正在解决您的问题:
目前您总是尝试使用 Google API.
在应用启动时获取高级功能的状态
你也可以这样做:
如果用户购买高级功能,将其保存为 SharedPreference。
示例:premiumVersion = true
每当用户 returns 和应用程序启动时,您可以首先检查 SharedPreference,因为这不太可能失败(不需要互联网连接等)。如果 premiumVersion == true,则不要向 Google API 询问当前状态。如果 premiumVersion == false,仅使用 Google API。在这种情况下,之前的尝试可能失败了,或者用户只是没有高级功能。
旁注:如果 premiumVersion == true,请确保永远不要用 false 覆盖它!
用于显示价格:
如果在尝试检索您的产品时出现任何问题,只需向用户提示一条错误消息,提示出现问题,他应该重试。
您可以简单地使用带有字段 premium_enabled - true/false 的 Fire-base 登录和实时数据库(这将有助于用户使用旧的 google id 进行播放-商店)
步步为营
- 在您的应用程序中添加 google 登录。
在 fire-base user_id/email_id 和 premium_enabled 字段中输入用户并在其中存储数据。 (您可以根据需要添加字段)
如果用户购买了而不是输入
premium_enabled - true & 也使用共享首选项进行离线检查
我有一个 android 应用程序,其中包含一些应用程序内商品。用户购买应用内商品,应用解锁相应的功能。现在我有一个问题:我阅读了 Google 文档,但似乎并不是我的问题的明确答案:
应用在启动时检索可用的应用内商品列表,然后继续检索已购买的应用内商品列表。如果应用内商品出现在可用列表中,我就会解锁该功能。
为什么我在启动时检查可用的应用内商品列表?
因为我需要在 UI(购买按钮)上写下价格,而且我不想对不同国家/地区的所有可能价格进行硬编码。响应包含所有可用的应用内商品列表以及已经本地化的价格,因此非常方便
为什么我在启动时查看已购买的应用内商品列表?
因为我想检查用户是否购买了应用内商品,然后我解锁了 UI 上的功能。 Google 文档说调用不需要互联网连接,为什么不呢?当我只调用本地 Google 播放 API 时,为什么还要在本地保存应用内 JSON 产品?
现在我的问题是:调用可用的应用内商品和调用已购买的商品可能会失败...实际上失败了一次。如果失败我该怎么办?禁用这些功能不是一种选择,因为用户可能认为 he/she 丢失了产品。启用这些功能也是一个禁忌,因为我可能会为从未购买过产品的人启用这些功能。所以我卡住了。重试就够了吗?这里的最佳做法是什么?
据我了解:
用户购买了应用内商品,启用了您应用的高级版本。购买后,无需进一步购买即可启用该功能。所以是一次性购买。
正在解决您的问题:
目前您总是尝试使用 Google API.
在应用启动时获取高级功能的状态你也可以这样做: 如果用户购买高级功能,将其保存为 SharedPreference。 示例:premiumVersion = true
每当用户 returns 和应用程序启动时,您可以首先检查 SharedPreference,因为这不太可能失败(不需要互联网连接等)。如果 premiumVersion == true,则不要向 Google API 询问当前状态。如果 premiumVersion == false,仅使用 Google API。在这种情况下,之前的尝试可能失败了,或者用户只是没有高级功能。
旁注:如果 premiumVersion == true,请确保永远不要用 false 覆盖它!
用于显示价格:
如果在尝试检索您的产品时出现任何问题,只需向用户提示一条错误消息,提示出现问题,他应该重试。
您可以简单地使用带有字段 premium_enabled - true/false 的 Fire-base 登录和实时数据库(这将有助于用户使用旧的 google id 进行播放-商店)
步步为营
- 在您的应用程序中添加 google 登录。
在 fire-base user_id/email_id 和 premium_enabled 字段中输入用户并在其中存储数据。 (您可以根据需要添加字段)
如果用户购买了而不是输入 premium_enabled - true & 也使用共享首选项进行离线检查