生活随笔
收集整理的這篇文章主要介紹了
IOS设备唯一标示符的方案比较
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
現(xiàn)有IOS設(shè)備唯一標(biāo)示符的方案比較
UDID
[[UIDevice currentDevice] uniqueIdentfier]
iOS官方最早提供的UDID方案,根據(jù)某一公式,使用設(shè)備序列號(hào)、網(wǎng)卡地址等信息作為參數(shù)計(jì)算而來(lái),iOS6之后該計(jì)算公式發(fā)生了改變。
該方法返回的結(jié)果在所有應(yīng)用中都相同,并且卸載應(yīng)用、刷機(jī)、還原設(shè)備均不會(huì)發(fā)生改變,是最為準(zhǔn)確的設(shè)備唯一標(biāo)示符。
iOS5之后,該方法被標(biāo)記為廢棄!最終,在2013年5月1號(hào)之后,AppStore禁止任何使用該方法的應(yīng)用上架。
iOS7中對(duì)外公開(kāi)的API中已經(jīng)移除了該方法!
網(wǎng)卡地址
通過(guò)Unix級(jí)別的API去獲取Wifi的網(wǎng)卡地址。
該方法屬于UDID替代方案中最為準(zhǔn)確的一種,因?yàn)榫W(wǎng)卡地址不會(huì)因?yàn)樗C(jī)、還原設(shè)備而發(fā)生改變。故追求唯一性的廠商多選擇此種方案!
在iOS7之后,應(yīng)用已經(jīng)無(wú)法獲取網(wǎng)卡地址,所以該方案在iOS7中也已經(jīng)被廢棄。
OpenUDID
開(kāi)源的一個(gè)UDID替代方案,原理是利用應(yīng)用間的剪貼板共享和本地一些必要的緩存信息,讓多個(gè)應(yīng)用間共享一個(gè)UUID。
OpenUDID在官方廢棄UDID接口之后,受到廣泛的歡迎!可以說(shuō)是現(xiàn)在大多數(shù)應(yīng)用的UDID替代方法。
OpenUDID在刷機(jī)、還原設(shè)備后就會(huì)產(chǎn)生新的UDID,事實(shí)上,由于剪貼板的特殊性,如果所有使用了OpenUDID的應(yīng)用被全部卸載之后,再次安裝的應(yīng)用取到的OpenUDID將會(huì)是一個(gè)全新的值!
iOS7中,不同組的應(yīng)用(即不同廠商)的應(yīng)用之間不再能共享剪貼板間的數(shù)據(jù)!
同組(即同一廠商)應(yīng)用的定義為:Info.plist中關(guān)于軟件唯一標(biāo)示符的字段CFBundleIdentifier中的前兩段標(biāo)識(shí)符(例如com.mycompany)相同。
固在iOS7中,OpenUDID也將慢慢失去它的意義。
保存在NSUserDefault中的UUID
在iOS5將UDID標(biāo)為廢棄之后,官方提供的替代方案。即使用CFUUIDCreate生成一個(gè)UUID,并將之保存在NSUserDefault中,用它作為設(shè)備標(biāo)識(shí)符。在iOS6之后,蘋(píng)果更推出NSUUID來(lái)替代CFUUIDCreate,但本質(zhì)是一樣的。
UUID每次都會(huì)生成一個(gè)新的字符串,也就是說(shuō)應(yīng)用被卸載之后,就會(huì)被認(rèn)為是一個(gè)新的設(shè)備,更不用提刷機(jī)、還原設(shè)備了。
故基本無(wú)人采用UUID的方案。
廠商唯一標(biāo)識(shí)符identifierForVender
[[UIDevice currentDevice] identifierForVender]
iOS6中推出的UDID替代方案,該方法對(duì)于同一廠商的應(yīng)用返回相同的值,不同廠商所得到的值不同。
該方案刷機(jī)、還原設(shè)備后,獲得值將會(huì)改變。同樣注意的是:如果同一廠商安裝的所有應(yīng)用都被卸載后,新安裝的同一廠商的應(yīng)用同樣也將獲得新的值,而不是原來(lái)的值!
由于不能跨廠商,并且軟件卸載后再安裝有改變的可能性,該方案也并沒(méi)有被廣大開(kāi)發(fā)商接受。
廣告標(biāo)識(shí)符advertisingIdentifier
[[ASIdentifierManager sharedManager] advertisingIdentifier];
iOS6中推出的另一款UDID替代方案,該方法對(duì)所有廠商的應(yīng)用返回相同的值。同樣提供的是另一個(gè)API,advertisingTrackingEnabled,該參數(shù)表示用戶是否希望廣告追蹤被限定,但該參數(shù)僅僅是個(gè)布爾值,用于表示用戶意愿,不影響advertisingIdentifier的讀取。
該方法由于是官方提供的,并且所有廠商的應(yīng)用取到的值相同,所以相對(duì)接受度好些,但是由于僅在iOS6上適用,所以更多人還是選擇了OpenUDID的方案。
該方法刷機(jī)、還原設(shè)備后,獲得的值將會(huì)改變。此外,用戶如果通過(guò)設(shè)置->關(guān)于本機(jī)->廣告->還原廣告標(biāo)識(shí)符,就可以重新生成一個(gè)新的值。
該方法是iOS7上目前官方允許的范疇內(nèi)最為可接受的方案。
IMEI
iOS官方API無(wú)法獲得IMEI,或者說(shuō)禁止獲取。故很少有人在iOS上去讀取IMEI。但IMEI作為設(shè)備唯一標(biāo)識(shí)符是最為準(zhǔn)確的方法之一!不會(huì)隨著刷機(jī)、還原設(shè)備而改變!
讀取IMEI的應(yīng)用將會(huì)被AppStore拒絕!
同樣類似的方案有藍(lán)牙地址、iOS設(shè)備序列號(hào)(SerialNumbedr)等等。
總結(jié)
以上是生活随笔為你收集整理的IOS设备唯一标示符的方案比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。