我们在做Android/IOS应用或游戏的时候,或许总会碰到要获取设备唯一id来标识或跟踪玩家。但随着系统安全性的提高,加强用户的隐私安全,获取设备唯一ID变得越来越困难了,下面我们来分析一下,看看哪些还可以满足我们需求,同时,如果您有关于获取设备唯一ID的新发现,欢迎留言讨论。
1. UDID(Unique Device Identifier)
UDID 是苹果IOS设备的唯一标识码,曾经都是通过它来作为进行唯一标识的。但遗憾的是,现在,UDID已经被禁止获取了。UDID [iOS 5 - iOS 6] 关于禁用的官方文档
2. MAC Address
MAC 地址,曾经也是作为唯一标识的重要参数,但很遗憾,ios 7 之后也被禁止了,ios 7之后,如果请求Mac 地址都会返回一个固定的值。Mac 地址 关于禁用的官方文档。所以,它也不能作为唯一标识码了。
3. UUID(Universally Unique Identifier)
UUID, 统一唯一标识符。苹果公司建议使用UUID作为应用生成唯一标识字符串。但是,如果用户删除应用后,再次重新安装又会生成新的字符串。如果使用UUID,应考虑卸载再重新安装的问题。
4. Open UUID
这个不是苹果官方的,而是第三方SDK。每台iOS设备的 open UUID 都是通过第一个带有OpenUUID SDK 的App生成的。如果手机上没有带有OpenUUID SDK 的App或者卸载完所有带有OpenUUID SDK 的App后再重新安装,则会生成新的 UUID 值,因此也不是唯一的。
5. IDFA(identifier for identifier)
广告标识符,可用于广告追踪。IDFA 基本可以做到唯一,但以下几种情况会改变IDFA的值:
1)用户完全重置系统(通过设置里的还原->还原位置与隐私)
2)用户明确还原广告标识符(通过设置里的 广告->还原广告标识符)
如果用户执行了以上操作,则会生成新的IDFA的值。另外,在IOS 14.5 及以上的设备中获取IDFA,则必须请求跟踪权限才能获取到广告标识符。如果用户拒绝,则IDFA可能为null。Identifier For Advertising(广告标识符) [iOS 6.0+] 官方文档
[[[ASIdentifierManager sharedManager] ad