可以将Google Cloud Messaging的实例ID(现已弃用)用于应用程序跟踪吗?

时间:2019-12-06 03:06:21

标签: android google-cloud-messaging uniqueidentifier

我当前正在使用android的设备ID(ANDROID_ID)作为我自己的应用中自己的分析API的唯一标识符。最近我听说Google在Android 10(Q)下,如https://developer.android.com/training/articles/user-data-ids

中所述,Android在使用唯一标识符方面将受到更严格的限制
  

Android 10(API级别29)为不可重置的标识符(包括IMEI和序列号)增加了限制。您的应用必须是设备或个人资料所有者应用,具有特殊的运营商权限,或具有READ_PRIVILEGED_PHONE_STATE特权,才能访问这些标识符。

因此,我继续使用Google Cloud Messaging的实例ID作为替换(具有GCM依赖项)。但是再一次,我看到该库已被弃用,因此我想到GCM API可能会在不久的将来停止使用。

使用GCM的实例ID仍然可以吗?请注意,我只想将其用于获取设备的唯一ID。

如果我可以使用另一个唯一ID的任何建议,请注意以下几点:

  • 尽可能少或没有依赖性
  • 如果唯一ID在应用卸载/设备恢复出厂设置时刷新,只要它在刷新时是全局唯一的,就可以了
  • 不妨碍或困扰设备安全性
  • 如果可能的话,易于设置,必须是可重用的代码
  • 极少(十亿分之一的机会)或没有重复机会
  • 我知道Java的UUID,但我仍在研究其可行性

非常感谢您!

2 个答案:

答案 0 :(得分:0)

使用加密的RNG(例如java.security.SecureRandom)生成随机的128位或更长的ID就足够了。

即使对于122位ID(包括在随机UUID中发现的ID),仅在生成约27亿个值(请参阅“ Birthday problem”)后,发生冲突的预期机会才是50%。

另请参见Android开发者网站中的“ Best practices for unique identifiers”和我的“ Unique Random Identifiers”部分。

答案 1 :(得分:-1)

由于生成唯一ID是一个非常棘手的主题,因此我求助于使用Google自己的Firebase API。他们会使用唯一ID(前提是您的设备具有Google Play。

对于那些希望每个设备具有独立唯一ID的用户,只需坚持使用API​​处理/抛出唯一ID。