獲取唯一識別符號

2021-07-09 04:37:18 字數 3848 閱讀 7674

ios 2.0版本以後uidevice提供乙個獲取裝置唯一識別符號的方法uniqueidentifier,通過該方法我們可以獲取裝置的序列號,這個也是目前為止唯一可以確認唯一的識別符號。但是,因為該唯一識別符號與手機一一對應,蘋果覺得可能會洩露使用者隱私,所以在ios 5.o之後該方法就被廢棄掉了。

ios 6.0系統新增了兩個用於替換uniqueidentifier的介面,分別是:vendor識別符號(idfv-identifierforvendor)和廣告識別符號(idfa-identifierforidentifier)。至於該兩個不能作為唯一識別符號,請檢視後面介紹;

例項方法:

//獲取udid

nsstring* uniqueidentifier = [[uidevice currentdevice] uniqueidentifier];

它使蘋果ios裝置的唯一識別碼,它是由40個字元的字母和陣列組成(越獄的裝置通過某些工具可以改變裝置的udid)。流動網路可利用udid來識別移動裝置,但是,從ios 5.0(2023年8月份)開始,蘋果宣布將不再支援使用uniqueidentifer方法獲取裝置的udid,ios 5以下是可以使用的。在2013你啊你3月21日蘋果已經通知開發者:從2023年5月1日起,訪問uidids的程式將不再被審核通過,替代的佛納甘是開發者應該使用「在ios 6中介紹的vendor或advertising識別符號」。所以udid是絕對不能用了。

例項方法:

8825482c-3bcc-440b-8d7a-a6a43c713cb9
- (nsstring*) uuid
它是讓分布式系統中的所有元素,都能有唯一的辨識諮詢,而不需要透過**控制端賴做辨識諮詢的指定。這樣,每個人都可以建立不予其他人衝突的udid。在此情況下,就不需要考慮資料庫建立時的名稱重複問題。蘋果公司建議使用uuid為應用生成唯一標識字串。開發者可以在應用第一次啟動呼叫一次,然後將該串儲存起來,以便以後替代udid來使用。但是,如果使用者刪除該應用再次安裝時,又會生成新的字串,所以不能保證唯一識別該裝置。
mac位址,用來表示網際網路上每乙個識別符號,採用十六進製制數表示,共六個位元組(48位)。其中,前三個位元組是由ieee的註冊管理機構ra負責給不同廠家分配的**(高位24位),也稱為「編制上唯一的識別符號」(organizationally unique identifier),後三個位元組(低位24位)由各廠家自行指派給生產的介面卡介面,稱為擴充套件識別符號(唯一性)。mac位址在網路上用來區分裝置的唯一性,接入網路的裝置都有乙個mac位址,他們肯定是不同的,是唯一的。一部iphone上可能有多個mac位址,包括wifi的、sim的等,但是itouch和ipad上就有乙個wifi的,因此只需要獲取wifi的mac位址就好了,也就是en0位址。

加入標頭檔案: #include 「openudid.h」

例項**:

nsstring *openudid =[openudid value];
open udid,沒有用到mac位址,同時能保證同一臺裝置上的不同應用私用同乙個openidod,只要使用者裝置上有乙個使用了openudid的應用存在時,其他後續安裝的應用如果獲取openudid,都會獲得第乙個應用生成的那個。但是如果把使用了openudid方案的應用全部都刪除,再重新獲取openudid,此時的openudid就跟以前的不一樣。
例項**:

3a29445-794d-4d24-a0b4-abddf79d44ee
新增框架:adsupport.framework

新增標頭檔案: #import < adsupport/asidentifiermanager.h >

獲取廣告標示符:nslog(@」%@」,[[asidentifiermanager sharedmanager].advertisingidentifier uuidstring]);

廣告標示符,是ios 6中另外乙個新的方法,提供了乙個方法advertisingidentifier,通過呼叫該方法會返回乙個nsuuid例項,最後可以獲得乙個uuid,由系統儲存著的。不過即使這是由系統儲存的,但是有幾種情況下,會重新生成廣告標示符。如果使用者完全重置系統((設定程式→通用→還原→還原位置與隱私),這個廣告標示符會重新生成。另外如果使用者明確的還原廣告(設定程式→通用→關於本機→廣告→還原廣告標示符)),那麼廣告標示符也會重新生成。關於廣告識別符號的還原,有一點需要注意:如果程式在後台執行,此時使用者「還原廣告標示符」然後再回到程式中,此時獲取廣告識別符號並不會立即獲得還原後的識別符號。必須要終止程式,然後再重新啟動程式,才能獲得還原後的廣告識別符號。

例項**:

<__nsconcreteuuid 0x7fab28f16850> 1c5db393-c32a-4000-99f2-710e36ab4a82
nslog(@"%@",[[uidevice currentdevice] identifierforvendor]);
vendor標示符,也是ios6中新增的,跟advertisingidentifier一樣,該方法返回的是乙個nsuuid物件,可以獲得乙個uuid。如果滿足條件「相同乙個程式裡面-相同」的vendor-相同的裝置「,那麼獲取到的這個屬性值就不會變。如果是」相同的程式-相同的裝置-不同的vendor,或者是相同的程式-不同的裝置-無論是否相同的vendpor「這樣的情況,那麼著個值是不會相同的。
推送token+bundle_id的方法:

應用中增加推送用來獲取token;

獲取應用bundle_id;

根據token+bundle_id進行雜湊運算;

uuid一般只生成一次,儲存在ios系統裡面,如果應用刪除了,重灌應用之後它的uuid還是一樣的,除非系統重置。但是不能保證在以後的系統公升級後還能使用(如果系統儲存了該資訊就能用)。

開發者們知道keychain,他是儲存證書的,以及我們平時瀏覽網頁記錄的賬目密碼。ios中的keychain相比os x比較簡單,整個系統只有乙個keychain,每個程式都可以往keychain中記錄資料,而且只能讀取到自己程式記錄在keychain中的資料。ios中security.framework框架提供了四個主要的方法來操作keychain:

osstatus

secitemcopymatching(cfdictionaryref

query, cftyperef *result)

osstatus secitemadd(cfdictionaryref attributes, cftyperef *result)
osstatus

secitemupdate(cfdictionaryref

query,

cfdictionaryref attributestoupdate)

osstatus

secitemdelete(cfdictionaryref

query)

d、新增庫檔案security.framework

e、**示例:

+ (nsstring *)getuuid

return struuid;

}

測試**:

nsstring * uuid= [uuid getuuid];

nslog(@"uuid=%@",uuid);

測試結果:

uuid=19aab430-9cb8-4325-acc5-d7d386b68960

iOS獲取裝置唯一識別符號

在開發中會遇到應用需要記錄裝置標示,即使應用解除安裝後再安裝也可重新識別的情況,在這寫一種實現方式 讀取裝置的uuid universally unique identifier 並通過keychain記錄。首先儲存裝置的uuid,可以使用類方法 id uuid 是乙個類方法,呼叫該方法可以獲得乙個...

iOS唯一識別符號

在2013年3月21日蘋果已經通知開發者,從2013年5月1日起,替代的方案是開發者應該使用 在ios 6中介紹的vendor或advertising標示符 cfuuid方法用來建立cfuuidref,並且可以獲得乙個相應的nsstring,如下 cfuuidref cfuuid cfuuidcre...

python UUID唯一識別符號

uuid 通用唯一識別符號 universally unique identifier 對於所有的uuid它可以保證在空間和時間上的唯一性.它是通過mac位址,時間戳,命名空間,隨機數,偽隨機數來保證生成id的唯一性,有著固定的大小 128 bit python的uuid模組提供uuid類和函式uu...