在很多场景中,我们需要获取设备的唯一标识,用来做定点推送等操作,那么这时候我们就需要精准到某台手机,甚至某个人,客户端这边就需要保证这个标识具有唯一性,并且即使我们的APP卸载重装了,也能够保持不变。
在iOS5以前,大家普遍使用的是UDID,可iOS5以后苹果就把UDID的访问权限移除了,而且试图访问UDID的程序在审核的时候很大几率都会被拒。所以使用UDID作为唯一标识的路就行不通了。
还有人说,UUID也可以作为唯一标识,确实,但是,有一个不好的地方就是每次获取设备的UUID都会是一个新的与上次不同的值,所以这个也行不通。
还有一个Open UDID,但是这个库已经弃用了,而且这个值在APP卸载重装后获得的值也会不同。
此外,广告标志符IDFA,也曾被人用作唯一标识,但是这个在重置系统或者还原广告标志符后获取到的值也会不同。
那么,我们又将如何获取iOS设备的唯一标识呢?
解决方案:
在APP第一次运行的时候,使用keychain存储一个标识,然后在接下来访问的时候直接从keychain中取。这样做的好处在于,keychain中的数据会被同步到iCloud中,即使删除了应用也会存在。但是这样做也有一个不好的地方,就是如果多台手机使用了同一个iCloud账号登录,那么这个唯一标识将毫无意义。
不过,话又说回来,任何一种技术的实现都有自己的应用场景,比如上面这个既然是同一个iCloud账号就看做是同一个账号。所以,如何标记iOS设备还得看具体的需求。
网友评论