iOS设备唯一标识符总结

iOS唯一标识符总结

前言

本文总结了iOS发展历程中出现的唯一标识符,详细说明了相关概念、适用范围、获取方式和注意事项。

包括IMEIUDIDMac 地址IDFAIDFV

IMEI [iOS 2 - iOS 5]

概念

IMEI(International Mobile Equipment Identity):国际移动设备身份码,在手机组装完成后赋予的一个全球唯一的号码,由于此时 iPhone 只支持单卡,所以 IMEI 和 iPhone 是一一对应的。

iOS 2 提供了一种方法获取 IMEI,但是为了保护用户隐私,iOS 5 以后苹果不再允许获取 IMEI 了,如果你在应用中获取 IMEI,可能会遭到 Apple Store 的拒绝。

UDID [iOS 5 - iOS 6] 关于禁用的官方文档

概念

UDID全称是Unique Device Identifier,它就是苹果iOS设备的唯一标识码,它由40个字符的字母和数字组成,在 iOS 6(2013 年 5 月 ) 以后被 Apple 禁止。

Mac 地址 关于禁用的官方文档

概念

Mac(Medium/Media Access Control):网络设备的物理地址,如果 IMEI 被认为是设备的唯一标识,那么 Mac 就是网络接口唯一标识。同样由于隐私问题,在 iOS 7 之后无法通过 Mac 地址来标识唯一设备,因为在 iOS 7 之后获取到的 Mac 地址为一固定值。

IDFA:Identifier For Advertising(广告标识符) [iOS 6.0+] 官方文档

概念

每个设备唯一的字母数字字符串,您仅将其用于广告。将此字符串用于频率上限、归因、转化事件、估计唯一用户数量、广告欺诈检测和调试。在运行 iOS 14.5 及更高版本和 iPadOS 14.5 及更高版本的设备上,您的应用必须请求跟踪授权才能获取广告标识符。

获取

[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

说明

1. 广告标识符返回唯一的 UUID 或全零。它在以下情况下返回唯一的 UUID:

  • 如果“设置”>“隐私”>“跟踪”>“允许应用程序请求跟踪”处于启用状态,则您已通过调用应用程序跟踪透明度 API 向用户请求跟踪授权,并收到了由 ATTrackingManager.AuthorizationStatus.authorized 指示的授权。
  • 如果用户在授权您的应用后将设置 > 隐私 > 跟踪 > 允许应用请求跟踪更改为关闭,并为您的应用保留权限。

2. 在以下情况下,广告标识符返回全零 (00000000-0000-0000-0000-000000000000):

  • 在模拟器中,无论任何设置
  • 当您在运行 macOS 的设备上调用此 API 时
  • 在运行 iOS 14.5 及更高版本和 iPadOS 14.5 及更高版本的设备上, 如果您尚未使用 App Tracking Transparency 框架请求授权。
  • 如果您已使用 App Tracking Transparency 框架请求授权并且用户拒绝,则会导致授权状态为 ATTrackingManager.AuthorizationStatus.denied。
  • 当配置文件或配置限制对广告标识符的访问时

注意

【设置 > 隐私 > 跟踪 > 允许应用请求跟踪】要求App停止追踪后,之后重装获取到的IDFA将会变化。

App Tracking Transparency [iOS 14.0+] 官方文档

概念

请求用户授权以访问应用相关数据以跟踪用户或设备。

说明

如果您的应用程序收集有关最终用户的数据并与其他公司共享以跨应用程序和网站进行跟踪,则您必须使用 AppTrackingTransparency 框架。AppTrackingTransparency 框架向用户提出应用跟踪授权请求,并提供跟踪授权状态。

要使用 AppTrackingTransparency 框架:

  • 设置 NSUserTrackingUsageDescription 以显示安装在最终用户设备上的应用程序的系统权限警报请求。
  • 调用 requestTrackingAuthorization(completionHandler:) 将应用跟踪授权请求呈现给最终用户。
  • 使用 trackingAuthorizationStatus 确定应用跟踪权限状态。

注意

仅当应用程序状态为 UIApplicationStateActive 时才会提示调用 API。如果另一个权限请求正在等待用户确认,则不会显示授权提示。iOS 不会保留并发请求,并且不会提示通过应用扩展调用 API。检查 trackingAuthorizationStatus 的 ATTrackingManager.AuthorizationStatus.notDetermined 状态以确定您是否需要进行额外的调用。

IDFV :Identifier For Vendor(应用开发商标识符)[iOS 6.0+] 官方文档

概念

向应用程序供应商唯一标识设备的字母数字字符串。

获取

[[[UIDevice currentDevice] identifierForVendor] UUIDString]

说明

对于来自同一供应商并在同一设备上运行的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及不同设备上的应用程序(无论供应商)返回不同的值。

通常,供应商由 App Store 提供的数据确定。如果应用程序不是从应用程序商店安装的(例如企业应用程序和仍在开发中的应用程序),则会根据应用程序的bundle ID 计算供应商标识符。bundle ID 假定为反向 DNS 格式。

在 iOS 6 中,bundle ID的前两个组件用于生成供应商 ID。如果bundle ID 只有一个组件,则使用整个bundle ID。

在 IOS 7 中,bundle ID的所有组件(最后一个组件除外)都用于生成供应商 ID。如果bundle ID 只有一个组件,则使用整个bundle ID。

下表显示了bundle ID 的集合以及系统用于计算供应商 ID 的bundle ID 的哪些部分。

Bundle ID iOS 6.x iOS 7.x
Com.example.app1 Com.example.app1 Com.example.app1
Com.example.app2 Com.example.app2 Com.example.app2
Com.example.app.app1 Com.example.app.app1 Com.example.app.app1
Com.example.app.app2 Com.example.app.app2 Com.example.app.app2
Example Example Example

注意

  • 如果该值为 nil,则等待并稍后再次获取该值。例如,这发生在设备重新启动之后但用户解锁设备之前。
  • 当应用程序(或来自同一供应商的另一个应用程序)安装在 iOS 设备上时,此属性中的值保持不变。当用户从设备中删除该供应商的所有应用程序并随后重新安装其中一个或多个应用程序时,该值会发生变化。当使用 Xcode 安装测试版本或使用 ad-hoc 分发在设备上安装应用程序时,该值也可能发生变化。因此,如果您的应用程序将此属性的值存储在任何地方,您应该优雅地处理标识符更改的情况。

IDFA和IDFV的区别

IDFA IDFV
获取条件 iOS14以下 【设置 >隐私 >广告 > 限制广告跟踪】 关闭 iOS14以上 【设置 > 隐私 > 跟踪 > 允许应用请求跟踪】开启 && 授权弹窗允许 无权限要求
值修改条件 iOS14以下 【设置 >隐私 >广告 > 还原广告标识符】 iOS14以上【设置 > 隐私 > 跟踪 > 允许应用请求跟踪】要求App停止追踪 删除该供应商的所有应用程序
特点 设备唯一、可更改 同一供应商同一设备相同且唯一、可更改

参考文章

iOS Device ID 的前世今生

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容