问题:
在我的一个 Android 应用程序中,应该允许用户更改我的服务器上的文本数据(通过 HTTP 请求),而无需登录或注册。
为了防止垃圾邮件和滥用此功能,我想标识我的应用程序的单个安装,以便我可以“禁止”此安装。当然,滥用我的服务的用户可以卸载应用程序并重新下载或类似的东西。但这确实是一个障碍,使滥用该应用程序变得更加困难。
所以我必须找到一种方法来识别 Android 设备或至少是单个安装。
一目了然 here或 here Android 手机的物理设备 ID 不是一个好的解决方案。那么我还能做些什么来实现这一目标?
我的想法:
当应用程序首次启动时,创建一个(几乎)唯一的当前时间戳哈希值(可能是 SHA-512)和一个巨大的随机数。然后将此值保存在内部存储中,并始终使用它来识别此设备或以后安装(在 HTTP 请求时)。
您如何看待该解决方案?有没有更好的方法?
这几乎就是Android Developers Blog建议,对吗?但他们真的在写入内部存储吗?他们没有按照建议使用 openFileOutput() here .
最后,还有一个可能有点愚蠢的问题:
如何使用 Android 开发者博客上显示的代码?我可以将该公共(public)类添加到我的主要 Activity .java 文件中吗?
非常感谢您! :)
最佳答案
在我当前的 Android 项目中,我使用蓝牙 mac id 作为标识符,因为我了解到物理设备 ID 不可靠。当然,我的应用程序非常专业,无论如何都需要蓝牙和互联网,所以这是可行的。
具体来说,我有一种方法可以通过手机调用我的网络服务器,并传入蓝牙 mac ID。我可以检查许可证状态(用于试用/过期),您可以在其中检查禁止方法以查看该 ID 是否被禁止。
由于我的应用程序需要蓝牙,这对我来说非常有效,因为[大多数]所有蓝牙 mac id 都应该是唯一的。
只是一个想法。
关于android - 识别 Android 设备/安装(没有物理 ID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111863/