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

时间:2014-01-20 02:17:01

标签: android in-app-billing

在我提出这个问题之前,我已经浏览了Android In-App billing documentation,以及像this这样的StackOverflow上的一些类似问题。此外,我猜这个问题可能会被关闭或者投票,因为它不是一个直接的编程问题,而且本质上是主观的。但是,它仍然存在。

实施工作正常。我的问题是在本地存储应用内购买的好方法。在我的情况下,只有一个一次性可解锁项目可以解锁应用程序的全部功能,并且不会过期或被消耗。

共享偏好设置对于盗版来说似乎有点太容易了。即使查询Google Play工作正常并且看起来相对安全,它还可以依靠吗?由于文档建议异步拨打电话,因此支付解锁功能的用户可能不得不等待才能访问未锁定的功能,这听起来并不是一个好主意。此外,当清除GP缓存时,它需要比平时更长的时间(这可能是一种罕见的情况)。

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

2 个答案:

答案 0 :(得分:5)

其实我认为你的问题会因为几个不同的原因而被关闭,但我会给你一些见解。

您可以选择一些选项,具体取决于产品的性质以及其他一些选项。

  • 如果产品终身有效,或者根据时间(对于instante,更新一年),您可以依赖谷歌播放,这可能是好的。
  • 如果产品是用户在应用程序内部以不同方式消费的内容,例如游戏内货币,额外生命等,则应将其保存在本地,sqlite数据库或远程数据库中(如果您想要使用服务器来集中某些服务。

如果你看一下指南purchase iab products的“消费购买”部分,你可以阅读:

  

购买商品后,它被视为“拥有”而不能   在该州,可以从Google Play再次购买。你必须发送   Google Play之前对该项目的消费请求   可以再次购买。所有托管的应用内商品都是   耗材。如何在您的应用中使用消费机制取决于   您。通常,您将实施产品的消费   用户可能想多次购买的临时利益(for   例如,游戏中的货币或可补充的游戏代币)。你会   通常不想为那些产品实现消费   购买一次并提供永久性效果(例如,溢价   升级)。

对于消费品:

  

您有责任控制和跟踪应用内商品的效果   被提供给用户。例如,如果用户在游戏中购买   货币,你应该用金额来更新玩家的库存   货币购买。

     

安全建议:您必须先发送消费请求   提供消费者应用程序内购买的好处   用户。确保您已成功消费   在您配置项目之前,Google Play的回复。

无论如何,在任何范围内,我都会建议跟踪用户购买的所有产品以及他自己拥有的所有权限,因为它更快,而且它可能对其他一些事情有用,例如自定义统计信息,报告等。

答案 1 :(得分:2)

如果您担心盗版,则应使用后端网络服务器。谷歌有一个网络API,用于检查购买是否合法。让设备联系您的Web服务器。让网络服务器通过Google验证。如果有效,请让设备从服务器下载资产。

如果in app项目不是资产,但游戏中的消耗品可能让您的服务器返回加密字符串,您的应用知道如何解密。

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