設備唯一標識符 UDID,UUID, IDFA,IDFV,


一、UDID:

UDID的全稱是Unique Device Identifier,是蘋果IOS設備的唯一識別碼,它由40個字符的字母和數字組成。在很多需要限制一台設備一個賬號的應用中經常會用到。在iOS5中可以獲取到設備的UDID,后來被蘋果禁止了。

 

備注:

代碼不讓獲取

 

獲取UDID的幾種方法:

1、Xcode

手機連接電腦后,打開Xcode,然后選擇window-->Device and Simulator-->Device
選中自己的手機,就能看到信息,"Identifier"這一欄,便是UDID。

 

2、蒲公英

https://www.pgyer.com/tools/udid
點擊上面鏈接,掃描二維碼,會提示安裝一個描述文件,點擊安裝之后,就會在瀏覽器中顯示出設備信息。長按復制"設備信息UDID"下面的值,就是UDID了。

二、UUID:

UUID是Universally Unique Identifier的縮寫,中文意思是通用唯一識別碼。它是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。這樣,每個人都可以建立不與其它人沖突的UUID。在此情況下,就不需考慮數據庫建立時的名稱重復問題。蘋果公司建議使用UUID為應用生成唯一標識字符串。

 

開發者可以在應用第一次啟動時調用一次,然后將該串存儲起來,替代UDID來使用。使用UUID,就要考慮應用被刪除后再重新安裝時的處理。一個解決的辦法是:UUID一般只生成一次,通過    KeyChain 鑰匙串保存在iOS系統里面,如果應用刪除了,重裝應用之后它的UUID還是一樣的,除非系統重置。但是不能保證在以后的系統升級后還能用(如果系統保存了該信息就能用)。

/// 獲取設備 UUID
+(NSString*)createUUID
{
    CFUUIDRef puuid = CFUUIDCreate( nil );
    CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
    NSString * uuid = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
    CFRelease(puuid);
    CFRelease(uuidString);

    return uuid;
}

 

備注:

不同的應用不同的uuid,

還原設備,uuid變化

卸載重裝,uuid不變

如果iPhone系統升級,導致存儲路徑變化,uuid可能會變化

 

三、IDFAidentifierForIdentifier

廣告標示符,適用於對外:例如廣告推廣,換量等跨應用的用戶追蹤等。是iOS6中另外一個新的方法,提供了一個方法advertisingIdentifier,通過調用該方法會返回一個NSUUID實例,最后可以獲得一個UUID,由系統存儲着的。不過即使這是由系統存儲的,但是有幾種情況下,會重新生成廣告標示符。如果用戶完全重置系統((設置程序-> 通用 -> 還原 -> 還原位置與隱私) ,這個廣告標示符會重新生成。另外如果用戶明確的還原廣告(設置程序->通用 -> 關於本機 -> 廣告 -> 還原廣告標示符),那么廣告標示符也會重新生成。關於廣告標示符的還原,有一點需要注意:如果程序在后台運行,此時用戶“還原廣告標示符”,然后再回到程序中,此時獲取廣告標示符並不會立即獲得還原后的標示符。必須要終止程序,然后再重新啟動程序,才能獲得還原后的廣告標示符。

在同一個設備上的所有App都會取到相同的值,是蘋果專門給各廣告提供商用來追蹤用戶而設的,用戶可以在 設置|隱私|廣告追蹤 里重置此id的值,或限制此id的使用,故此id有可能會取不到值,但好在Apple默認是允許追蹤的,而且一般用戶都不知道有這么個設置,所以基本上用來監測推廣效果,是戳戳有余了。

注意:由於idfa會出現取不到的情況,故絕不可以作為業務分析的主id,來識別用戶。

 

ios14的 idfa 是默認關閉的,當然你可以打開。美國99%的用戶選擇不會分享 idfa。這對數字媒體平台的廣告精准發布是個大障礙,用戶畫像更將模糊。對用戶來說,你的數字設備上收到的個性化廣告或相關性廣告將變得少得多。

 

代碼:

#import <AdSupport/AdSupport.h>

NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];

 

 

備注:

還原設備,idfa變化 (設置程序 -> 通用 -> 還原 -> 還原位置與隱私)

還原廣告標識符,idfa變化 (設置程序-> 通用 -> 關於本機 -> 廣告 -> 還原廣告標示符)

在隱私-Apple廣告-個性化廣告中,iOS14以上默認是關閉的,所以取不到idfa

idfa可能會取不到值 

每個設備只有一個IDFA,不同APP在同一設備上獲取IDFA的結果是一樣的

設備重啟不會產生新的IDFA

 

四、IDFVidentifierForVendor

Vindor標示符,適用於對內:例如分析用戶在應用內的行為等。

是給Vendor標識用戶用的,每個設備在所屬同一個Vender的應用里,都有相同的值。其中的Vender是指應用提供商,但准確點說,是通過BundleID的DNS反轉的前兩部分進行匹配,如果相同就是同一個Vender,例如對於 com.somecompany.appone,com.somecompany.apptwo 這兩個BundleID來說,就屬於同一個Vender,共享同一個idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常適合於作為內部用戶行為分析的主id,來標識用戶,替代OpenUDID。

注意:如果用戶將屬於此Vender的所有App卸載,則idfv的值會被重置,即再重裝此Vender的App,idfv的值和之前不同。

代碼:

NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

 

備注:

idfv的值是一定能取到

同一台設備上,來自同一個供應商的 App,IDFV 相同。

同一台設備上,來自不同廠商的 App,IDFV 不同。

不同設備的 IDFV 不同,與供應商無關。換言之,即使同一個廠商的 App,在不同設備上 IDFV 也不相同。

當 iOS 設備上存在同一廠商的其他應用時,刪除 App 重裝,IDFV 保持不變。

刪除 iOS 設備上同一廠商全部 App,重新安裝 App,IDFV 會發生改變。

使用 Xcode 安裝測試版本或 ad-hoc 包時,IDFV 會發生改變。

還原設備,idfv變化 (設置程序 -> 通用 -> 還原 -> 還原位置與隱私)

  

 

五、IMEI

IMEI:英文名稱是:International Mobile Equipment Identity,是國際移動設備身份碼的縮寫,國際移動裝備辨識碼,是由15位數字組成的”電子串號”,它與每台手機一一對應,而且該碼是全世界唯一的。每一部手機在組裝完成后都將被賦予一個全球唯一的一組號碼,這個號碼從生產到交付使用都將被制造生產的廠商所記錄。手機用戶可以在手機中查到自己手機的IMEI碼。因為隱私問題,蘋果用戶在iOS5以后不能再獲取IMEI的值了。如果開發的App不上架蘋果商店,又想獲取IMEI值,可參考此鏈接,獲取IMEI值。

 

備注:

不讓獲取

 

六、IMSI
IMSI:英文名稱是:International Mobile Subscriber Identification Number,是國際移動用戶識別碼的縮寫,IMSI分為兩部分:一部分叫MCC(Mobile Country Code移動國家碼),MCC的資源由國際電聯(ITU)統一分配,唯一識別移動用戶所屬的國家,MCC共3位,中國地區的MCC為460;另一部分叫MNC(Mobile Network Code 移動網絡號碼),MNC用於識別移動客戶所屬的移動網絡運營商。MNC由二到三個十進制數組成,例如中國移動MNC為00、02、07,中國聯通的MNC為01、06、09,中國電信的MNC為03、05、11。

 

七、MAC

MAC地址:Mac地址是唯一的,unix有系統調用可以獲取Mac地址。iPhone可能有多個Mac地址,wifi的地址、以及SIM卡的地址。一般來講,我們取en0的地址,因為它是iPhone的wifi的地址,是肯定存在的(例外情況依然有:市面上依然存在一部分聯通的閹割版無wifi的iPhone)。Mac地址涉及到隱私,不應該胡亂將用戶的Mac地址傳播,所以我們需要將Mac地址進行hash之后再去使用。同樣因為隱私問題,在iOS7以后,蘋果禁止獲取MAC地址,系統現在只會返回02:00:00:00:00:00虛擬的地址。

 

備注:

不讓獲取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM