Android 存储应用内购买的最佳方式

Android 存储应用内购买的最佳方式,android,in-app-billing,Android,In App Billing,在我提出这个问题之前,我已经讨论了,以及一些类似的关于StackOverflow的问题。此外,我猜这个问题可能会被关闭或否决,因为它不是一个直接的编程问题,而且本质上是主观的。但是,它还是来了 实施效果良好。我的问题是,什么是在本地存储应用内购买的好方法。在我的例子中,只有一个一次性可解锁项目可以解锁应用程序的全部功能,并且不会过期或被消费 共享偏好对于盗版来说似乎有点太容易了。尽管查询Google Play很好,而且看起来相对安全,但它是否足够可靠?由于文档建议异步调用,因此为解锁功能付费的用

在我提出这个问题之前,我已经讨论了,以及一些类似的关于StackOverflow的问题。此外,我猜这个问题可能会被关闭或否决,因为它不是一个直接的编程问题,而且本质上是主观的。但是,它还是来了

实施效果良好。我的问题是,什么是在本地存储应用内购买的好方法。在我的例子中,只有一个一次性可解锁项目可以解锁应用程序的全部功能,并且不会过期或被消费

共享偏好对于盗版来说似乎有点太容易了。尽管查询Google Play很好,而且看起来相对安全,但它是否足够可靠?由于文档建议异步调用,因此为解锁功能付费的用户可能需要等待才能访问解锁的功能,这听起来不是一个好主意。此外,当GP缓存被清除时,所需的时间比平常长(这可能是一种罕见的情况)


但是看到有这么多的应用程序和开发者,我想知道其他开发者是如何处理的

事实上,我认为你的问题会因为几个不同的原因而结束,但我会给你一些见解

你有一些选择,这取决于产品的性质以及其他一些方面

  • 如果产品终身有效,或者取决于时间(例如Instant,一年的更新),你可以依赖google play,这可能会很好
  • 如果产品是用户在应用程序中以不同方式消费的东西,如游戏内货币、额外生命等,则应将其保存在本地、sqlite数据库或远程数据库中(如果要使用服务器集中某些服务)
如果您阅读本指南的“消费购买”部分,您可以阅读:

一旦购买了一件物品,它就被认为是“自有”的,不能再购买 在该状态下再次从Google Play购买。你必须发送 在Google Play发布商品之前,该商品的消费请求 可再次购买。所有受管理的应用内产品都是 消耗品。如何在应用程序中使用消费机制取决于 你。通常,您将为具有以下特性的产品实现消费: 用户可能希望多次购买的临时福利(例如 例如,游戏内货币或可补充的游戏代币)。你会的 通常不希望对以下产品实施消费: 购买一次并提供永久效果(例如,溢价 升级)

对于消耗品:

您有责任控制和跟踪应用程序内产品的运行方式 已向用户提供。例如,如果用户在游戏中购买 货币,你应该更新玩家的库存量 购买的货币

安全建议:您必须在 向客户提供应用程序内消费品购买的好处 用户。确保您已收到成功的消费 在您设置项目之前,Google Play的响应


无论如何,在任何范围内,我都会建议跟踪用户购买的所有产品以及他自己拥有的所有特权,因为这样做速度更快,而且对于自定义统计、报告等其他事情也很有用。

如果你担心盗版,你应该使用后端web服务器。谷歌有一个web api来检查购买是否合法。让设备与您的web服务器联系。让web服务器通过Google进行验证。如果有效,则让设备从服务器下载您的资产

如果应用程序中的物品不是资产,而是游戏中的可消费物品,则服务器可能会返回一个加密字符串,您的应用程序知道如何解密该字符串


如果您完全依赖本地存储的购买信息,则很容易欺骗。

类似地,这里也讨论了这一点: