您的位置:首页 > 移动开发 > IOS开发

iOS 的唯一标识失效以及解决办法

2016-03-10 13:48 501 查看

iOS 的唯一标识失效以及解决办法

苹果的UDID 在 ios5 后就废弃了。那么怎么办呢,最近看到github上的两个项目。拿来分享一下

项目一:

https://github.com/doubleencore/DEUID

这个工程演示了以下几种uuid:

NSUUID(ios5后废弃)

Advertiser ID

Identifier for Vendor

OpenUDID

CFUUID

NSUUID

有什么区别?

从 API 可用的角度看:

iOS SDKios5(以下)ios5(包括ios5以上)
UDID可用不可用
Advertiser ID不可用ios6后可用
Identifier for Vendor不可用ios6后可用
OpenUDID可用可用
CFUUID可用可用
NSUUID不可用ios6后可用
参考文章1.

从持久性的角度(是否会改变)看:

持久性启动应用从后台返回前台还原广告标识重装app系统重启系统还原
UDID不变不变不变不变不变不变
Advertiser ID不变不变变化不变不变变化
Identifier for Vendor不变不变不变变化不变变化
OpenUDID不变不变不变不变不变变化
CFUUID变化变化变化变化变化变化
NSUUID变化变化变化变化变化变化

Identifier for Vendor在重装app时根据情况有特殊的表现:

它是根据app编译时你设置的BundleIdentifier的前两个域来判断所拥有的app是否共享一个。说得太拗口。举个例子好了。

如果你们的公司开发了三个app(A,B,C),BundleIdentifier分别为 com.hxsmart.666 , com.hxsmart.888 ,com.zhangbh.666

那么当机子安装了以上三个app时,A,B的IDFV是一样的,C的是不一样的。

这时如果这时后续还有新的app(D,E),BundleIdentifier分别为

com.hxsmart.918 , com.zhangbh.000

那么D的IDFV跟之前的A,B一致,E跟之前的C一致。

这时用户卸载了A,B,C中的一个(比如A),重装后,IDFV还是一致,没有变化过。可是一旦ABC都卸载了。你再次重装,A,B,C的IDFV就 变化

注意:

还原广告标识: 设置–》隐私 –》还原广告标识 (老版本在通用–》关于–》广告)

项目一总结

OpenUDID 最接近于之前废弃的UDID的功能,如果系统还原了,你就当是一台新设备吧

————————————————

项目二:

https://github.com/fabiocaccamo/FCUUID

使用这个工程的要求:

SDK大于等于ios5

ARC

导入Security.framework

Key-value storage enabled (target/Capabilities/iCloud/Key-value storage)【可选】

UICKeyChainStore【可选】(github链接

这个工程演示了以下几种uuid

uuid(不可用)

uuidForKey:key

uuidForSession

uuidForInstallation

uuidForVendor

uuidForDevice

它们在持久性的不同之处:

持久性启动应用重启应用还原广告标识重装app系统重启系统升级系统还原
uuid变化变化变化变化变化变化变化
uuidForKey:key不变变化变化变化变化变化变化
uuidForSession不变变化变化变化变化变化变化
uuidForInstallation不变不变不变变化不变变化变化
uuidForVendor不变不变变化不变*不变变化变化
uuidForDevice不变不变不变不变不变不变不变**

和项目一大同小异,只是多了个系统升级。加*号的情况表示:

*情况和项目一举的例子一样。Identifier for Vendor

**只当用户恢复了一个包括keychain’s data的备份时才生效。

https://possiblemobile.com/2013/04/unique-identifiers/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: