IOS中的唯一标识符

这几天由于在做对用户进行统计,所以做了一些对唯一标识符的了解。

UDID

UDID(Unique Device Identifier)这才是我们真正意义上的设备唯一标识符。在iOS5以前可以通过

[UIDevice uniqueIdentifier]

这个方法获得。可是在iOS5以后已经被废弃了,后来开始使用Mac address来作为唯一标识符,同样最后又被封杀了。
所以现在没有真正意义上的唯一标识符。

UUID

UUID(Universally Unique Identifier)这是现在普遍使用的所谓的唯一标识符,可以从下面方法获取

[[NSUUID UUID] UUIDString]

但是常用的获取UUID还有两种方法:

  • 广告标识符(advertisingIdentifier)
  • vendor标识符
广告标识符
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

该方法需要添加框架头文件AdSupport.h,这方法是在iOS6中加的。这是由系统储存的,但是当这几种情况下会重置广告标识符:

  • 用户完全重置系统
  • 用户明确的还原广告

vendor标识符

[[[UIDevice currentDevice] identifierForVendor] UUIDString]

同一开发商的APP在指定机器上都会获得同一个ID。当我们删除了某一个设备上某个开发商的所有APP之后,下次获取将会获取到不同的ID。

是不是发现以上方法都不是真正意义上的唯一标识符。

现在如何获取?

现在获取的方法就是将UUID存入keychain中,每次要使用的时候就从keychain中获取,这样当app卸载后还会保存着这个“唯一标识符”。

碰到的问题

现在不知道keychain中存储的这个标识符是否会在手机被重置后被销毁。也就是问题在于keychain是否跟我们的apple Id相关联然后将这个标识符存入云中。

我是这样实验的:

  • 用我的apple Id 登录,然后打印出标识符 。
    -卸载这个软件,再次打印标识符,发现这个标识符跟原来那个标识符是一致的。
  • 卸载软件后换另一个apple Id 登陆,再次打印标识符,发现跟原来标识符还是一致。
  • 重置手机后再次用重复上述方法,打印结果不一致。

我的结论

我认为keychain(我不知道这个keychain和那个iCloud keychain到底是不是同一个东西)和apple Id没有关系,这个唯一标识符和apple Id并没有关系,重置后标识符改变说明标识符还是不好用啊。不过一般人也不会经常去重置手机,所以用来作为统计用户数据也还是基本可行的。

以上结论仅代表个人观点,希望大家能指点一下,纠正我的错误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容