蘋果在ios6中禁用了[uidevice uniqueidentifier],在ios7中又把mac位址的獲取給堵上了。沒辦法,畢竟人家是老大,說不讓你用,你也沒辦法。
在這邊總結一下現有的一部分udid獲取方法(有蘋果推薦的,也有第三方的),目的在於拋磚,沒有切實的說明哪種方法好用。用哪種方法,完全由大家自己根據需要來決定。
ios2~ios7目前已有的技術方案
方案提供方
實現方法
用途及使用情況
傳統udid
蘋果api
uidevice的例項方法uniqueidentifier直接可獲取
●獲取裝置的唯一識別碼
●在ios5及之前的版本中,基本上使用該方法來獲取udid。
mac+md5
unix系統呼叫
使用unix api獲取裝置的mac位址,再使用md5加密演算法生成乙個字串
●由於蘋果在ios6後停用了udid方案,所以大部分應用都開始使用這種方案來生成裝置的唯一識別碼
cfuuid/nsuuid
蘋果api
通過唯一標識裝置的乙個值
(通常是乙太網硬體位址)和乙個時間值來生成乙個唯一標識串
● 蘋果建議基於cfuuid來生成乙個udid,然後將其存在程式中使用
idfv
蘋果api
uidevice的例項方法identifierforvendor
● 用於標識**商
adid
蘋果api
asidentifiermanager的例項方法advertisingidentifier
●用於廣告服務
openudid
第三方開源**
以cfuuid為基礎生成乙個串,並同時儲存於系統剪下板和程式的沙盒(nsuserdefault)中,應用程式從這兩個地方之一獲取udid
●在蘋果宣布禁用傳統udid方案後,這是目前使用較為廣泛的開源方案,包括友盟在內的很多開發商都使用這一方案。
secureudid
第三方開源**
以cfuuid為基礎生成乙個串,並同時儲存於程式剪下板中,程式可以從該剪下板中獲取udid
●在蘋果宣布禁用傳統
系統支援情況
蘋果在ios6以後,已禁用了uidevice的uniqueidentifier方法,所以傳統的udid方法在ios6以後已不能使用;而從ios7開始,獲取mac位址的方法統一返回02:00:00:00:00:00,所以使用mac+md5方法已無意義。
方案
ios 2
ios 3
ios 4
ios 5
ios 6
ios 7
udid
√
√
√
√
×
×
mac+md5
√
√
√
√
√
×
cfuuid
√
√
√
√
√
√
nsuuid
×
×
×
×
√
√
idfv
×
×
×
×
√
√
ad id
×
×
×
×
√
√
openudid
?
√
√
√
√
√
secureudid
?
√
√
√
√
√
持久化情況
啟動程式
從後台返回
重置廣告標識
重新安裝程式
系統重啟
系統還原設定
公升級系統
重灌系統
傳統udid
√
√√
√
√
√
√
√
mac+md5
√
√
√
√
√
√
√
√
cfuuid/nsuuid
×
×
×
×
×
×
×
×
idfv√√
√×√×
?√?×
adid√√
×√√×
?√?×
openudid√√
√√√×
?√?×
secureudid√√
√×√×
?√?×
注:√表示能夠保證udid的持久化,
×表示該情況下udid可能會丟失改變,?表示該種情況沒有實際驗證過,純屬猜測(畢竟公升級系統什麼的太麻煩)
優缺點
優點
缺點
cfuuid/nsuuid
● 刪除程式再安裝時,會生成新的udid
idfv
● 對於執行於同一裝置上的同一**商的所有程式,該值都是相同的。
● 對於同一裝置上不同**商的程式,該值是不同的
● 所謂同一**商是由cfbundleidentifier中的反轉dns前兩部分來確定,如com.test1和com.test2即認為不是同一**商
● 使用者如果刪除同一**商的所有程式,再安裝該**商的程式時,該值會改變。
● 該值在程式執行於後台時,或使用者在重啟系統後第一次解鎖裝置可能返回nil值。
adid
● 該值由系統持久化
● 即使使用者限制廣告跟蹤,也可以使用該值來統計使用者數量、安全等方面的操作
● 該值對於所有的**商都是一樣的
● 只能用於廣告服務的程式訪問乙個唯一標識
● 如果使用者還原所有系統設定或還原廣告識別符號時,可能重置該值。
● 該值在程式執行於後台時,或使用者在重啟系統後第一次解鎖裝置可能返回nil值。
openudid
●同一臺裝置上使用openudid的所有程式其獲取到的udid都是相同的
● 沒有用到取mac位址等可能被蘋果禁用的api
● 在系統恢復設定或刷機的情況下會丟失
● 非蘋果原生api
secureudid
●對於執行於同一裝置上的同一**商的所有程式,該值都是相同的(**商自己控制)。這樣防止因乙個程式外洩udid,而導致裝置的udid外洩
● 與硬體裝置無關
● 不能確保不同裝置上的udid不同
● 使用者可以選擇阻止secureudid收集udid資訊
● 如果使用者備份a裝置系統並將其恢復到b裝置,則b裝置將得到a裝置的udid
● 刪除程式並清空剪下板可能會導致丟失
● 非蘋果原生的api
注:優缺點是個人判斷,還請各位看官指正
參考文獻
●
iOS平台UDID方案比較
蘋果在ios6中禁用了 uidevice uniqueidentifier 在ios7中又把mac位址的獲取給堵上了。沒辦法,畢竟人家是老大,說不讓你用,你也沒辦法。系統支援情況 蘋果在ios6以後,已禁用了uidevice的uniqueidentifier方法,所以傳統的udid方法在ios6以後...
iOS平台UDID方案比較
蘋果在ios6中禁用了 uidevice uniqueidentifier 在ios7中又把mac位址的獲取給堵上了。沒辦法,畢竟人家是老大,說不讓你用,你也沒辦法。在這邊總結一下現有的一部分udid獲取方法 有蘋果推薦的,也有第三方的 目的在於拋磚,沒有切實的說明哪種方法好用。用哪種方法,完全由大...
UDID替代方案
from 大多數應用都會用到蘋果裝置的udid號,udid通常有以下兩種用途 1 用於一些統計與分析目的 第三方統計工具如友盟,廣告商如admob等 2 將udid作為使用者id來唯一識別使用者,省去使用者名稱,密碼等註冊過程。不過,2011年時,蘋果就宣布ios5.0以後的系統中將不再支援以下方法...