val*_*674 4 android android-identifiers
我认为会有一些直接的解决方案。
要求:
选项:
每次需要时使用某种 Android 的 device-identifier-API(每次从 Android 的 API 中读取)。根据Identififying-app-installations博客文章,这是不推荐且不可靠的解决方案。
生成一次 UUID(在第一次应用程序启动时)并以某种方式将其保存在某个地方,以便在多个应用程序安装/卸载时保留它。这个“不知何故”的部分是个谜。无法选择存储到 SD 卡或云等解决方案。iOS 有可用于这类东西的钥匙串,但我没有找到 Android 的等价物。
我在这里的其他选择是什么?由于我的服务器实现,我更喜欢走 (2) 路线(如果不存在,服务器将第一次生成 UUID)。但如果它不是一个选项,我可以回退到 (1) 并修改服务器。
谢谢。
要在应用程序安装/重新安装之间唯一标识应用程序,您需要获取它hardware ID并将其用作您的凭据/密钥。
要获取硬件 ID,您可以使用以下方法:
public static String getHardwareId(Context context) {
return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
Run Code Online (Sandbox Code Playgroud)
它部分等同于 UUID,但有以下例外:如果在设备上执行恢复出厂设置,该值可能会更改。
我将其称为“部分等效”的原因是:HardwareID 是一个 64 位数字(作为十六进制字符串),它是在用户首次设置设备时随机生成的,并且在用户设备的整个生命周期内应保持不变. 如果在设备上执行恢复出厂设置,该值可能会更改。注意:当一个设备有多个用户时(在运行 Android 4.2 或更高版本的某些设备上可用),每个用户显示为一个完全独立的设备,因此ANDROID_ID值对每个用户都是唯一的。
但这遇到了第二个问题:在哪里以及如何存储它;将它存储在 SharedPreferences 中是没有用的,因为如果卸载应用程序,它会被擦除。与 /data/data/your.package.name/my_stored_keys 文件夹相同,因为在卸载过程中该文件夹也会从手机中删除。
如果您希望在卸载和重新安装应用程序之间坚持使用,则需要将其保存在服务器端。
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |