在平日寫代碼的時(shí)候,經(jīng)常會(huì)遇到需要生產(chǎn)唯一標(biāo)識(shí)符的時(shí)候,比如現(xiàn)在做的這個(gè)實(shí)時(shí)通訊的項(xiàng)目,需要給每條消息給一個(gè)MessageID旷太,毫無疑問這個(gè)值應(yīng)該是唯一不會(huì)重復(fù)的展懈。
一般來說有這樣幾種方法销睁。(注意:本來打算是寫每次都隨機(jī)生成不一樣的標(biāo)識(shí)的方法的,順帶就想到每次生成固定字符的方法了。)
1.時(shí)間戳,
NSTimeInterval time = [[NSDate date] timeIntervalSince1970]*1000; double i=time; //NSTimeInterval返回的是double類型 NSString * uniqueString = [NSString stringWithFormat:@"%.f",i];
示例: 1463451753668
時(shí)間是不會(huì)回轉(zhuǎn)的,但是可以人為的調(diào)時(shí)間存崖。另外這里用時(shí)間戳做MessageID 對(duì)方設(shè)備時(shí)間和我不一致,也有可能會(huì)出現(xiàn)ID重復(fù)的情況冻记。
2、CFUUID
從iOS2.0開始来惧,CFUUID就已經(jīng)出現(xiàn)了冗栗。它是CoreFoundatio包的一部分,因此API屬于C語言風(fēng)格供搀。獲得的這個(gè)CFUUID值系統(tǒng)并沒有存儲(chǔ)隅居。每次調(diào)用CFUUIDCreate,系統(tǒng)都會(huì)返回一個(gè)新的唯一標(biāo)示符葛虐。
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault); CFStringRef uuidStrRef= CFUUIDCreateString(kCFAllocatorDefault, uuidRef); CFRelease(uuidRef); NSString * retStr = [NSString stringWithString:(__bridge NSString *)uuidStrRef]; CFRelease(uuidStrRef);
示例: A2FEB483-CE39-4891-9A49-6C49ECA782E4
3胎源、NSUUID
NSUUID在iOS 6中才出現(xiàn),這跟CFUUID幾乎完全一樣屿脐,只不過它是OC接口涕蚤。:
NSString *uuid =[[NSUUID UUID] UUIDString];
示例: 9AB5953E-9D2F-48FA-9542-5857DAD2A3F9
4、identifierForVendor(不變,根據(jù)bundleID)
iOS6.0及以后,顧名思義的诵,是給Vendor標(biāo)識(shí)用戶用的赞季,每個(gè)設(shè)備在所屬同一個(gè)Vender的應(yīng)用里,都有相同的值奢驯。其中的Vender是指應(yīng)用提供商申钩,但準(zhǔn)確點(diǎn)說,是通過BundleID的DNS反轉(zhuǎn)的前兩部分進(jìn)行匹配瘪阁,如果相同就是同一個(gè)Vender撒遣,例如對(duì)于com.somecompany.appone,com.somecompany.apptwo 這兩個(gè)BundleID來說,就屬于同一個(gè)Vender管跺,共享同一個(gè)idfv的值义黎。和idfa不同的是,idfv的值是一定能取到的豁跑,所以非常適合于作為內(nèi)部用戶行為分析的主id廉涕,來標(biāo)識(shí)用戶,替代OpenUDID艇拍。
注意:如果用戶將屬于此Vender的所有App卸載狐蜕,則idfv的值會(huì)被重置,即再重裝此Vender的App卸夕,idfv的值和之前不同层释。
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
示例:9AFE0AE0-BD7E-4545-A519-F95B135B800B
5、advertisingIdentifier(不變快集,根據(jù)設(shè)備)
iOS6.0及以后贡羔。直譯就是廣告id廉白, 在同一個(gè)設(shè)備上的所有App都會(huì)取到相同的值,是蘋果專門給各廣告提供商用來追蹤用戶而設(shè)的乖寒,用戶可以在 設(shè)置|隱私|廣告追蹤 里重置此id的值猴蹂,或限制此id的使用,故此id有可能會(huì)取不到值楣嘁,但好在Apple默認(rèn)是允許追蹤的磅轻,而且一般用戶都不知道有這么個(gè)設(shè)置,所以基本上用來監(jiān)測推廣效果马澈,是綽綽有余了。
注意:由于idfa會(huì)出現(xiàn)取不到的情況弄息,故絕不可以作為業(yè)務(wù)分析的主id痊班,來識(shí)別用戶。
#import <AdSupport/AdSupport.h> NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
示例: D4438804-35AA-455C-8078-927373D1EAC9
6摹量、已經(jīng)廢棄的
[UIDevice uniqueIdentifier]
還有一個(gè)生成iOS設(shè)備唯一標(biāo)示符的方法是使用iOS設(shè)備的Media Access Control(MAC)地址涤伐。一個(gè)MAC地址是一個(gè)唯一的號(hào)碼,它是物理網(wǎng)絡(luò)層級(jí)方面分配給網(wǎng)絡(luò)適配器的缨称。這個(gè)地址蘋果還有其他的名字凝果,比如說是硬件地址(Hardware Address)或是Wifi地址,都是指同樣的東西睦尽。
7器净、OpenUDID 與 FCUUID
iOS開發(fā):如何獲取設(shè)備唯一標(biāo)識(shí)?以及多個(gè)App間如何共享同一個(gè)設(shè)備唯一標(biāo)識(shí)当凡?
iOS生成唯一標(biāo)識(shí)符
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門汹想,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撤蚊,你說我怎么就攤上這事欧宜。” “怎么了拴魄?”我有些...
- 文/不壞的土叔 我叫張陵冗茸,是天一觀的道長席镀。 經(jīng)常有香客問我,道長夏漱,這世上最難降的妖魔是什么豪诲? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮挂绰,結(jié)果婚禮上屎篱,老公的妹妹穿的比我還像新娘。我一直安慰自己葵蒂,他們只是感情好交播,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著践付,像睡著了一般秦士。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上永高,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艇抠!你這毒婦竟也來了亥啦?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤练链,失蹤者是張志新(化名)和其女友劉穎翔脱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體媒鼓,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡届吁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绿鸣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疚沐。...
- 正文 年R本政府宣布究流,位于F島的核電站辣吃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芬探。R本人自食惡果不足惜神得,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望偷仿。 院中可真熱鬧哩簿,春花似錦、人聲如沸酝静。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽别智。三九已至宗苍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亿遂,已是汗流浹背浓若。 一陣腳步聲響...
- 正文 我出身青樓是越,卻偏偏與公主長得像耳舅,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倚评,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 現(xiàn)在我們生成唯一的標(biāo)識(shí)符的方法浦徊,主要是使用UUID,保存到Keychain里面天梧,一邊就算你刪除了應(yīng)用盔性,下一次安...
- 一.UDID(Unique Device Identifier) UDID的全稱是Unique Device Id...
- 在開發(fā)過程中,我們經(jīng)常會(huì)被要求獲取每個(gè)設(shè)備的唯一標(biāo)示呢岗,以便后臺(tái)做相應(yīng)的處理冕香。我們來看看有哪些方法來獲取設(shè)備的唯一標(biāo)...
- iOS獲取設(shè)備唯一標(biāo)識(shí)的各種方法惫霸?IDFA猫缭、IDFV、UDID分別是什么含義它褪? 一饵骨、UDID (Unique De...
- 8種iOS獲取設(shè)備唯一標(biāo)識(shí)的方法,希望對(duì)大家有用茫打。 UDID UDID(Unique Device Identif...