我意识到如果开发者在谷歌安卓市场发布付费应用程序。很快,付费应用将通过其他Android市场免费分发。在中国市场,盗版问题尤其严重。例如,Where's My Water (Chinese)
我在想,应用内购买能防止这样的盗版问题吗?
通过应用内购买购买附加项目
用户通过应用内购买购买其他项目。
一个密钥,被写入用户首选项。在应用程序内购买时,根据用户使用的google帐户生成密钥。我们不使用硬件ID的原因是,我们希望同一用户能够享受应用内购买项目,即使他正在使用其他设备。
使用密钥验证
因此,当用户倾向于使用附加项时,总是要进行验证。即使用户将密钥分发给其他人,也不会起作用。因为密钥仅对该特定用户有效。
我想知道,这是一个正在实施的共同做法,以打击安卓应用程序盗版问题?因为我没有看到很多关于这种技术的讨论。不知道我错过了什么坑掉下去吗?
最佳答案
像这样:)
这在很大程度上取决于应用内购买的类型:如果是他们从你的服务器下载的内容(图像、视频等),你可以对服务器进行检查,除非有人入侵你的服务器,否则几乎不可能作弊。
要添加/启用应用程序中已存在的功能,您需要将他们购买的项目列表保存在某个位置,以便应用程序知道要启用哪些功能。如果您只是将其保存到一个文件/shared/preferences/db中,有些人就可以简单地编辑这些文件(当然,在根设备上)并添加他们想要的任何项目。因此,您需要混淆您的项缓存,使其更难修改。一种方法是在磁盘上加密,然后在应用程序中解密。如果对所有设备使用相同的密钥,那么只需将文件/数据库复制到另一个设备以启用这些功能而不必付费就可以了。这就是为什么您需要从特定设备的特定对象(mac地址、android等)派生密钥。if可以使用google帐户派生密钥,但您需要向accountmanager检查用户是否在其设备上注册了此帐户(这需要额外的权限)。
至于使用硬件id,项目/订阅绑定到用户google帐户,因此您可以在任何设备上使用restore_事务来获取购买的项目。使用硬件ID来混淆项目缓存并不是问题,因为它只用于将项目存储在磁盘上,而不是获取购买状态,因此不会阻止用户在多个设备上使用该应用程序。