iOS:IDFV(identifierForVendor)使用陷阱

原文:https://easeapi.com/blog/blog/63-ios-idfv.html

IDFV(identifierForVendor)在iOS系统中常被用来唯一标识设备,但使用IDFV要小心,未正确理解IDFV的原理可能会造成使用上的错误。

获取IDFV标识

iOS系统通过以下代码获取IDFV:

NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor];

从AppStore下载的APP的表现

在 AppStore 下载的APP具有以下特征:

  • 同一厂商(即同一个开发者帐号)在一个iOS设备上的APP的IDFV相同;
  • 同一厂商在不同iOS设备上的APP的IDFV不同;
  • 不同厂商在同一iOS设备上的APP的IDFV不同;
  • 用户从iOS设备上删除了一个厂商的所有APP并重新安装了其中一个或多个APP时,IDFV会变化。

从非AppStore下载的APP的表现

如果APP不是从AppStore下载的,而是在开发阶段或者企业版APP,那么IDFV与APP bundle ID有关,也就是即使是同一厂商的来自AppStore的APP和开发阶段的APP在同一设备的IDFV也不一样。

具体的关联参考:Apple Documentation: identifierForVendor

并不是总能获取到IDFV

[[UIDevice currentDevice] identifierForVendor]并不是总能获取到IDFV值,在设备重启之后而用户未解锁之前会返回nil。

“卸载应用”操作不会使IDFV发生变化

新版的iOS系统支持“卸载应用”和“删除应用”两种操作,“卸载应用”允许用户保留文档和数据。“卸载应用”后重装APP,IDFV不会发生变化。

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

推荐阅读更多精彩内容