Cordova如何检测应用程序是否来自Google Play下载?

3
我正在制作一款Cordova 4.0的安卓应用,并计划在谷歌商店销售,我希望能够防止非法使用(例如防止某人从系统中提取APK并重新分发)。
理论上可以通过检查用户启动应用程序时是否确实是从谷歌商店下载的(而不是侧载),来达到这个目的。但我不确定这是否可行,或者是否有其他方式来做类似的事情。
在其他情况下有效的一种方法是在访问应用程序时需要登录,但在这种情况下我无法这样做。如有建议,请指教!

你有任何代码想分享吗? - Nurdin
3个回答

0

您可以使用包管理器类来确定应用程序的来源(目前仅检测到Google或Amazon)

同样,您可以使用Google Analytics提供相同的信息。

这非常棒,因为Android存储了每个包的来源,允许应用程序知道它们来自哪里,以防止盗版和侧载。

如果您始终发布到Google或Amazon,则非常好。如果您侧载应用程序,则无用。


这是一个 Cordova 插件吗? - Albert
这是Android SDK的标准部分。 - Dominic Cerisano

0

@michael_breker 谢谢你提供的链接,但那似乎只是针对原生Android应用的解决方案。我正在使用HTML/JAVASCRIPT/CSS进行开发,然后使用Cordova构建APK,并使用Eclipse导出签名的最终APK... - Albert
我有类似的情况,一段时间以前我需要为Phonegap应用进行许可证检查。除了官方方法,我没有找到其他可靠的实现方式。事实上,我也很想知道是否存在其他的方法!不过当时我并没有本地实现它。那个应用从未完成。 - michael_brecker
我发现了这个(http://teusink.blogspot.com/2013/02/phonegap-android-license-key-app.html?m=1)。你试过吗?看起来这正是我们要找的,但在尝试之前,我必须学习所有许可证方面的工作原理。此外,它似乎可能与发布应用程序的开发者帐户绑定,但在我的情况下,我将使用客户的帐户(我无法访问),因此可能会使事情变得复杂一些。另外,我使用的是Cordova 4.0,它似乎是为3+而制作的,不确定它是否仍然兼容。 - Albert

0

对于那些需要连接服务器获取数据的应用程序,一个建议是:

应用程序验证令牌

  • 生成一个编码为64位长的令牌,并在设备和服务器上存储。这将是每个应用程序的唯一标识符。
  • 每当应用程序尝试连接到服务器时,它会发送设备令牌详细信息。服务器在满足请求之前需要进行验证。
  • 在特定事件中,服务器可以为设备生成新的令牌。

同样,设备令牌可以在服务器端映射到用户或应用程序。

令牌可以携带一些与应用程序相关的信息,例如:

  • 前4或6位数字表示应用程序大小
  • 第二块数字可以表示用户特定的设备或其他详细信息
  • 或者另一个块可以保存应用程序内容修改日期

如果有任何更改,服务器可以验证应用程序大小、最后的应用程序内容修改日期等。

通常建议在提交之前对应用程序资源进行混淆、模糊化和最小化处理。


我喜欢使用令牌的想法,但我不知道如何通过这种方法区分从Google Play下载的应用和侧载的应用...你能详细说明一下吗? - Albert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接