iOS設(shè)備唯一標(biāo)識符總結(jié)

iOS唯一標(biāo)識符總結(jié)

前言

本文總結(jié)了iOS發(fā)展歷程中出現(xiàn)的唯一標(biāo)識符,詳細(xì)說明了相關(guān)概念、適用范圍、獲取方式和注意事項(xiàng)。

包括IMEI、UDIDMac 地址、IDFAIDFV

IMEI [iOS 2 - iOS 5]

概念

IMEI(International Mobile Equipment Identity):國際移動設(shè)備身份碼,在手機(jī)組裝完成后賦予的一個全球唯一的號碼,由于此時 iPhone 只支持單卡,所以 IMEI 和 iPhone 是一一對應(yīng)的。

iOS 2 提供了一種方法獲取 IMEI,但是為了保護(hù)用戶隱私,iOS 5 以后蘋果不再允許獲取 IMEI 了,如果你在應(yīng)用中獲取 IMEI,可能會遭到 Apple Store 的拒絕。

UDID [iOS 5 - iOS 6] 關(guān)于禁用的官方文檔

概念

UDID全稱是Unique Device Identifier,它就是蘋果iOS設(shè)備的唯一標(biāo)識碼,它由40個字符的字母和數(shù)字組成,在 iOS 6(2013 年 5 月 ) 以后被 Apple 禁止。

Mac 地址 關(guān)于禁用的官方文檔

概念

Mac(Medium/Media Access Control):網(wǎng)絡(luò)設(shè)備的物理地址,如果 IMEI 被認(rèn)為是設(shè)備的唯一標(biāo)識,那么 Mac 就是網(wǎng)絡(luò)接口唯一標(biāo)識。同樣由于隱私問題,在 iOS 7 之后無法通過 Mac 地址來標(biāo)識唯一設(shè)備,因?yàn)樵?iOS 7 之后獲取到的 Mac 地址為一固定值。

IDFA:Identifier For Advertising(廣告標(biāo)識符) [iOS 6.0+] 官方文檔

概念

每個設(shè)備唯一的字母數(shù)字字符串,您僅將其用于廣告。將此字符串用于頻率上限、歸因、轉(zhuǎn)化事件、估計(jì)唯一用戶數(shù)量、廣告欺詐檢測和調(diào)試。在運(yùn)行 iOS 14.5 及更高版本和 iPadOS 14.5 及更高版本的設(shè)備上,您的應(yīng)用必須請求跟蹤授權(quán)才能獲取廣告標(biāo)識符。

獲取

[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

說明

1. 廣告標(biāo)識符返回唯一的 UUID 或全零。它在以下情況下返回唯一的 UUID:

  • 如果“設(shè)置”>“隱私”>“跟蹤”>“允許應(yīng)用程序請求跟蹤”處于啟用狀態(tài),則您已通過調(diào)用應(yīng)用程序跟蹤透明度 API 向用戶請求跟蹤授權(quán),并收到了由 ATTrackingManager.AuthorizationStatus.authorized 指示的授權(quán)。
  • 如果用戶在授權(quán)您的應(yīng)用后將設(shè)置 > 隱私 > 跟蹤 > 允許應(yīng)用請求跟蹤更改為關(guān)閉,并為您的應(yīng)用保留權(quán)限。

2. 在以下情況下,廣告標(biāo)識符返回全零 (00000000-0000-0000-0000-000000000000):

  • 在模擬器中,無論任何設(shè)置
  • 當(dāng)您在運(yùn)行 macOS 的設(shè)備上調(diào)用此 API 時
  • 在運(yùn)行 iOS 14.5 及更高版本和 iPadOS 14.5 及更高版本的設(shè)備上, 如果您尚未使用 App Tracking Transparency 框架請求授權(quán)。
  • 如果您已使用 App Tracking Transparency 框架請求授權(quán)并且用戶拒絕,則會導(dǎo)致授權(quán)狀態(tài)為 ATTrackingManager.AuthorizationStatus.denied。
  • 當(dāng)配置文件或配置限制對廣告標(biāo)識符的訪問時

注意

【設(shè)置 > 隱私 > 跟蹤 > 允許應(yīng)用請求跟蹤】要求App停止追蹤后,之后重裝獲取到的IDFA將會變化。

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

概念

請求用戶授權(quán)以訪問應(yīng)用相關(guān)數(shù)據(jù)以跟蹤用戶或設(shè)備。

說明

如果您的應(yīng)用程序收集有關(guān)最終用戶的數(shù)據(jù)并與其他公司共享以跨應(yīng)用程序和網(wǎng)站進(jìn)行跟蹤,則您必須使用 AppTrackingTransparency 框架。AppTrackingTransparency 框架向用戶提出應(yīng)用跟蹤授權(quán)請求,并提供跟蹤授權(quán)狀態(tài)。

要使用 AppTrackingTransparency 框架:

  • 設(shè)置 NSUserTrackingUsageDescription 以顯示安裝在最終用戶設(shè)備上的應(yīng)用程序的系統(tǒng)權(quán)限警報(bào)請求。
  • 調(diào)用 requestTrackingAuthorization(completionHandler:) 將應(yīng)用跟蹤授權(quán)請求呈現(xiàn)給最終用戶。
  • 使用 trackingAuthorizationStatus 確定應(yīng)用跟蹤權(quán)限狀態(tài)。

注意

僅當(dāng)應(yīng)用程序狀態(tài)為 UIApplicationStateActive 時才會提示調(diào)用 API。如果另一個權(quán)限請求正在等待用戶確認(rèn),則不會顯示授權(quán)提示。iOS 不會保留并發(fā)請求,并且不會提示通過應(yīng)用擴(kuò)展調(diào)用 API。檢查 trackingAuthorizationStatus 的 ATTrackingManager.AuthorizationStatus.notDetermined 狀態(tài)以確定您是否需要進(jìn)行額外的調(diào)用。

IDFV :Identifier For Vendor(應(yīng)用開發(fā)商標(biāo)識符)[iOS 6.0+] 官方文檔

概念

向應(yīng)用程序供應(yīng)商唯一標(biāo)識設(shè)備的字母數(shù)字字符串。

獲取

[[[UIDevice currentDevice] identifierForVendor] UUIDString]

說明

對于來自同一供應(yīng)商并在同一設(shè)備上運(yùn)行的應(yīng)用,此屬性的值相同。對于來自不同供應(yīng)商的同一設(shè)備上的應(yīng)用程序以及不同設(shè)備上的應(yīng)用程序(無論供應(yīng)商)返回不同的值。

通常,供應(yīng)商由 App Store 提供的數(shù)據(jù)確定。如果應(yīng)用程序不是從應(yīng)用程序商店安裝的(例如企業(yè)應(yīng)用程序和仍在開發(fā)中的應(yīng)用程序),則會根據(jù)應(yīng)用程序的bundle ID 計(jì)算供應(yīng)商標(biāo)識符。bundle ID 假定為反向 DNS 格式。

在 iOS 6 中,bundle ID的前兩個組件用于生成供應(yīng)商 ID。如果bundle ID 只有一個組件,則使用整個bundle ID。

在 IOS 7 中,bundle ID的所有組件(最后一個組件除外)都用于生成供應(yīng)商 ID。如果bundle ID 只有一個組件,則使用整個bundle ID。

下表顯示了bundle ID 的集合以及系統(tǒng)用于計(jì)算供應(yīng)商 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,則等待并稍后再次獲取該值。例如,這發(fā)生在設(shè)備重新啟動之后但用戶解鎖設(shè)備之前。
  • 當(dāng)應(yīng)用程序(或來自同一供應(yīng)商的另一個應(yīng)用程序)安裝在 iOS 設(shè)備上時,此屬性中的值保持不變。當(dāng)用戶從設(shè)備中刪除該供應(yīng)商的所有應(yīng)用程序并隨后重新安裝其中一個或多個應(yīng)用程序時,該值會發(fā)生變化。當(dāng)使用 Xcode 安裝測試版本或使用 ad-hoc 分發(fā)在設(shè)備上安裝應(yīng)用程序時,該值也可能發(fā)生變化。因此,如果您的應(yīng)用程序?qū)⒋藢傩缘闹荡鎯υ谌魏蔚胤?,您?yīng)該優(yōu)雅地處理標(biāo)識符更改的情況。

IDFA和IDFV的區(qū)別

IDFA IDFV
獲取條件 iOS14以下 【設(shè)置 >隱私 >廣告 > 限制廣告跟蹤】 關(guān)閉 iOS14以上 【設(shè)置 > 隱私 > 跟蹤 > 允許應(yīng)用請求跟蹤】開啟 && 授權(quán)彈窗允許 無權(quán)限要求
值修改條件 iOS14以下 【設(shè)置 >隱私 >廣告 > 還原廣告標(biāo)識符】 iOS14以上【設(shè)置 > 隱私 > 跟蹤 > 允許應(yīng)用請求跟蹤】要求App停止追蹤 刪除該供應(yīng)商的所有應(yīng)用程序
特點(diǎn) 設(shè)備唯一、可更改 同一供應(yīng)商同一設(shè)備相同且唯一、可更改

參考文章

iOS Device ID 的前世今生

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容