IOS裝置唯一標示符的方案比較

2021-06-26 15:35:29 字數 1957 閱讀 8883

現有ios裝置唯一標示符的方案比較

udid 

[[uidevice currentdevice] uniqueidentfier]

ios官方最早提供的udid方案,根據某一公式,使用裝置序列號、網絡卡位址等資訊作為引數計算而來,ios6之後該計算公式發生了改變。

該方法返回的結果在所有應用中都相同,並且解除安裝應用、刷機、還原裝置均不會發生改變,是最為準確的裝置唯一標示符。

ios7中對外公開的api中已經移除了該方法!

網絡卡位址

通過unix級別的api去獲取wifi的網絡卡位址。

該方法屬於udid替代方案中最為準確的一種,因為網絡卡位址不會因為刷機、還原裝置而發生改變。故追求唯一性的廠商多選擇此種方案!

在ios7之後,應用已經無法獲取網絡卡位址,所以該方案在ios7中也已經被廢棄。

openudid

開源的乙個udid替代方案,原理是利用應用間的剪貼簿共享和本地一些必要的快取資訊,讓多個應用間共享乙個uuid。

openudid在官方廢棄udid介面之後,受到廣泛的歡迎!可以說是現在大多數應用的udid替代方法。

openudid在刷機、還原裝置後就會產生新的udid,事實上,由於剪貼簿的特殊性,如果所有使用了openudid的應用被全部解除安裝之後,再次安裝的應用取到的openudid將會是乙個全新的值!

ios7中,不同組的應用(即不同廠商)的應用之間不再能共享剪貼簿間的資料!

同組(即同一廠商)應用的定義為:info.plist中關於軟體唯一標示符的字段cfbundleidentifier中的前兩段識別符號(例如com.mycompany)相同。

固在ios7中,openudid也將慢慢失去它的意義。

儲存在nsuserdefault中的uuid

在ios5將udid標為廢棄之後,官方提供的替代方案。即使用cfuuidcreate生成乙個uuid,並將之儲存在nsuserdefault中,用它作為裝置識別符號。在ios6之後,蘋果更推出nsuuid來替代cfuuidcreate,但本質是一樣的。

uuid每次都會生成乙個新的字串,也就是說應用被解除安裝之後,就會被認為是乙個新的裝置,更不用提刷機、還原裝置了。

故基本無人採用uuid的方案。

廠商唯一識別符號identifierforvender

[[uidevice currentdevice] identifierforvender]

ios6中推出的udid替代方案,該方法對於同一廠商的應用返回相同的值,不同廠商所得到的值不同。

該方案刷機、還原裝置後,獲得值將會改變。同樣注意的是:如果同一廠商安裝的所有應用都被解除安裝後,新安裝的同一廠商的應用同樣也將獲得新的值,而不是原來的值!

由於不能跨廠商,並且軟體解除安裝後再安裝有改變的可能性,該方案也並沒有被廣大開發商接受。

廣告識別符號advertisingidentifier

[[asidentifiermanager sharedmanager] advertisingidentifier];

ios6中推出的另一款udid替代方案,該方法對所有廠商的應用返回相同的值。同樣提供的是另乙個api,advertisingtrackingenabled,該引數表示使用者是否希望廣告追蹤被限定,但該引數僅僅是個布林值,用於表示使用者意願,不影響advertisingidentifier的讀取。

該方法由於是官方提供的,並且所有廠商的應用取到的值相同,所以相對接受度好些,但是由於僅在ios6上適用,所以更多人還是選擇了openudid的方案。

該方法刷機、還原裝置後,獲得的值將會改變。此外,使用者如果通過設定->關於本機->廣告->還原廣告識別符號,就可以重新生成乙個新的值。

該方法是ios7上目前官方允許的範疇內最為可接受的方案。

imei

ios官方api無法獲得imei,或者說禁止獲取。故很少有人在ios上去讀取imei。但imei作為裝置唯一識別符號是最為準確的方法之一!不會隨著刷機、還原裝置而改變!

同樣類似的方案有藍芽位址、ios裝置序列號(serialnumbedr)等等。

IOS裝置唯一標示符的方案比較

現有ios裝置唯一標示符的方案比較 udid uidevice currentdevice uniqueidentfier ios官方最早提供的udid方案,根據某一公式,使用裝置序列號 網絡卡位址等資訊作為引數計算而來,ios6之後該計算公式發生了改變。該方法返回的結果在所有應用中都相同,並且解除...

現有IOS裝置唯一標示符的方案比較

現有ios裝置唯一標示符的方案比較 udid uidevice currentdevice uniqueidentfier ios官方最早提供的udid方案,根據某一公式,使用裝置序列號 網絡卡位址等資訊作為引數計算而來,ios6之後該計算公式發生了改變。該方法返回的結果在所有應用中都相同,並且解除...

ios裝置唯一標示符

替代的方案是開發者應該使用 在ios 6中介紹的vendor或advertising標示符 蘋果已經警告過我們uniqueidentifier將不能再使用了,並且提供了另外兩個可選的。但是在程式中該選擇使用哪個呢?本文不會回答這個問題,具體用哪個是由你來根據程式的目的來做決定的。下面我將列出ios中...