亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

(轉)iOS中的唯一標示符

2019-11-14 19:43:34
字體:
來源:轉載
供稿:網友

在2013年3月21日蘋果已經通知開發者,從2013年5月1日起,訪問UIDIDs的程序將不再被審核通過,替代的方案是開發者應該使用“在iOS 6中介紹的Vendor或Advertising標示符”。

蘋果已經警告過我們uniqueIdentifier將不能再使用了,并且提供了另外兩個可選的。但是在程序中該選擇使用哪個呢?本文不會回答這個問題,具體用哪個是由你來根據程序的目的來做決定的。

下面我將列出iOS中目前支持的,以及被廢棄的唯一標示符方法,并對其做出相應的解釋,希望你看了以后針對唯一標示符的使用上,能夠做出正確的確定。

CFUUID從iOS2.0開始,CFUUID就已經出現了。它是CoreFoundatio包的一部分,因此API屬于C語言風格。CFUUIDCreate 方法用來創建CFUUIDRef,并且可以獲得一個相應的NSString,如下代碼:

  1. CFUUIDRef cfuuid =CFUUIDCreate(kCFAllocatorDefault); 
  2. NSString *cfuuidString =(NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));
復制代碼


獲得的這個CFUUID值系統并沒有存儲。每次調用CFUUIDCreate,系統都會返回一個新的唯一標示符。如果你希望存儲這個標示符,那么需要自己將其存儲到NSUserDefaults, Keychain, Pasteboard或其它地方。

示例: 68753A44-4D6F-1226-9C60-0050E4C00067

NSUUIDNSUUID在iOS 6中才出現,這跟CFUUID幾乎完全一樣,只不過它是Objective-C接口。+ (id)UUID 是一個類方法,調用該方法可以獲得一個UUID。通過下面的代碼可以獲得一個UUID字符串:

  1. NSString *uuid =[[NSUUID UUID] UUIDString];
復制代碼


跟CFUUID一樣,這個值系統也不會存儲,每次調用的時候都會獲得一個新的唯一標示符。如果要存儲的話,你需要自己存儲。在我讀取NSUUID時,注意到獲取到的這個值跟CFUUID完全一樣(不過也可能不一樣):

示例: 68753A44-4D6F-1226-9C60-0050E4C00067

廣告標示符(IDFA-identifierForIdentifier)這是iOS 6中另外一個新的方法,advertisingIdentifier 是新框架AdSupport.framework的一部分。ASIdentifierManager單例提供了一個方法advertisingIdentifier,通過調用該方法會返回一個上面提到的NSUUID實例。

  1. NSString *adId =[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
復制代碼


跟CFUUID和NSUUID不一樣,廣告標示符是由系統存儲著的。不過即使這是由系統存儲的,但是有幾種情況下,會重新生成廣告標示符。如果用戶完全重置系統((設置程序 -> 通用 -> 還原 -> 還原位置與隱私) ,這個廣告標示符會重新生成。另外如果用戶明確的還原廣告(設置程序-> 通用 -> 關于本機 -> 廣告 -> 還原廣告標示符) ,那么廣告標示符也會重新生成。關于廣告標示符的還原,有一點需要注意:如果程序在后臺運行,此時用戶“還原廣告標示符”,然后再回到程序中,此時獲取廣告標示符并不會立即獲得還原后的標示符。必須要終止程序,然后再重新啟動程序,才能獲得還原后的廣告標示符。之所以會這樣,我猜測是由于ASIdentifierManager是一個單例。

針對廣告標示符用戶有一個可控的開關“限制廣告跟蹤”。Nick Arnott的文章中已經指出了。將這個開關打開,實際上什么也沒有做,不過這是希望限制你訪問廣告標示符。這個開關是一個簡單的boolean標志,當將廣告標示符發到任意的服務器端時,你最好判斷一下這個值,然后再做決定。

示例: 1E2DFA89-496A-47FD-9941-DF1FC4E6484A

Vindor標示符 (IDFV-identifierForVendor)這種叫法也是在iOS 6中新增的,不過獲取這個IDFV的新方法被添加在已有的UIDevice類中。跟advertisingIdentifier一樣,該方法返回的是一個NSUUID對象。

  1. NSString *idfv =[[[UIDevice currentDevice] identifierForVendor] UUIDString];
復制代碼


蘋果官方的文檔中對identifierForVendor有如下這樣的一段描述 :
The value of this PRoperty is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.


如果滿足這樣的條件,那么獲取到的這個屬性值就不會變:相同的一個程序里面-相同的vindor-相同的設備。如果是這樣的情況,那么這個值是不會相同的:相同的程序-相同的設備-不同的vindor,或者是相同的程序-不同的設備-無論是否相同的vindor。

看完上面的內容,我有這樣的一個疑問“vendor是什么”。我首先想到的是蘋果開發者賬號。但事實證明這是錯誤的。接著我想可能是有一個AppIdentifierPrefix東西,跟鑰匙串訪問一樣,可以在多個程序間共享。同樣,這個想法也是的。最后證明,vendor非常簡單:一個Vendor是CFBundleIdentifier(反轉DNS格式)的前兩部分。例如,com.doubleencore.app1 和com.doubleencore.app2 得到的identifierForVendor是相同的,因為它們的CFBundleIdentifier 前兩部分是相同的。不過這樣獲得的identifierForVendor則完全不同:com.massivelyoverrated 或 net.doubleencore。

在這里,還需要注意的一點就是:如果用戶卸載了同一個vendor對應的所有程序,然后在重新安裝同一個vendor提供的程序,此時identifierForVendor會被重置。

示例: 599F9C00-92DC-4B5C-9464-7971F01F8370

UDID

在之前的版本中是可用的,但是在iOS5以及之后的版本中,以及被棄用了。雖然,這個UDID用得很廣泛,但是,不得不說的是,它在慢慢的遠離開發者,不能在考慮使用UDID了。至于這個標示符是轉為私有方法,或者完全從以后的iOS版本中移除,還有待觀察。不過,這個UDID在部署企業級簽名程序時,非常方便。獲取UDID的方法如下:

  1. NSString *udid =[[UIDevice currentDevice] uniqueIdentifier];
復制代碼


示例: bb4d786633053a0b9c0da20d54ea7e38e8776da4

OpenUDID在iOS 5發布時,uniqueIdentifier被棄用了,這引起了廣大開發者需要尋找一個可以替代UDID,并且不受蘋果控制的方案。由此OpenUDID成為了當時使用最廣泛的開源UDID替代方案。OpenUDID在工程中實現起來非常簡單,并且還支持一系列的廣告提供商。

  1. NSString *openUDID = [OpenUDID value];
復制代碼


OpenUDID利用了一個非常巧妙的方法在不同程序間存儲標示符 — 在粘貼板中用了一個特殊的名稱來存儲標示符。通過這種方法,別的程序(同樣使用了OpenUDID)知道去什么地方獲取已經生成的標示符(而不用再生成一個新的)。

之前已經提到過,在將來,蘋果將開始強制使用advertisingIdentifier 或identifierForVendor。如果這一天到來的話,即使OpenUDID看起來是非常不錯的選擇,但是你可能不得不過渡到蘋果推出的方法。

示例: 0d943976b24c85900c764dd9f75ce054dc5986ff

總結希望上面的信息能夠幫助你在程序使用選擇正確的唯一標示符。在這里,我創建了一個小的唯一標示符測試程序,你可以運行該程序,并查看一下顯示的內容(包括上面提到的所有標示符)。另外,下面有兩個表,表中描述了兩個內容:在iOS中的可用性,以及什么時候可以獲得重置的標示符。

<ignore_js_op> 

* 程序必須重啟才能看到改變的效果。

** 刪除了所有相同vendor提供的程序,才能看到改變的值。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久亚洲精品| 成人国产在线视频| 国产精品一区二区久久久久| 国产91精品视频在线观看| 国产视频久久网| 精品一区二区三区四区在线| 久久精品成人欧美大片| 欧美亚洲国产日本| 亚洲在线免费视频| 久久精品成人一区二区三区| 亚洲美女久久久| 性色av一区二区三区| 亚洲日本中文字幕免费在线不卡| 国产一区二区三区网站| 尤物yw午夜国产精品视频| www.亚洲一区| 亚洲国产欧美日韩精品| 欧美中文在线字幕| 91精品国产九九九久久久亚洲| 精品久久久av| 色无极亚洲影院| 中文字幕国产亚洲2019| 一个人看的www欧美| 中文一区二区视频| 国产精品96久久久久久又黄又硬| 亚洲精品视频播放| 国产色综合天天综合网| 欧美黄网免费在线观看| 日韩av有码在线| 亚洲xxxx做受欧美| 欧美精品激情blacked18| 欧美制服第一页| 久久久久久久亚洲精品| 欧美激情在线播放| 97香蕉久久超级碰碰高清版| 亚洲第一精品福利| 日韩电影在线观看中文字幕| 国产有码在线一区二区视频| 国产精品爽爽爽爽爽爽在线观看| 欧美日韩另类字幕中文| 日本成人激情视频| 国产精品视频网址| 日本亚洲精品在线观看| 91精品国产电影| 亚洲一区二区三区乱码aⅴ| 成人网在线视频| 久久久精品一区二区三区| 2019中文字幕在线| 欧美激情视频网址| 日韩一级裸体免费视频| 国产一区玩具在线观看| 欧美做受高潮1| 亚洲淫片在线视频| 欧美日韩国产综合视频在线观看中文| 91人人爽人人爽人人精88v| 日韩成人久久久| 国产欧美精品一区二区三区介绍| x99av成人免费| 91综合免费在线| 美日韩精品免费观看视频| 久久精品久久久久久| 久久久久久这里只有精品| 2019中文字幕全在线观看| 国产精品旅馆在线| 中文字幕日韩专区| 精品爽片免费看久久| 日韩在线视频国产| 韩国精品久久久999| 欧美激情第1页| 日韩av手机在线| 性欧美暴力猛交69hd| 亚洲精品白浆高清久久久久久| 欧美一区二区影院| 国产精品十八以下禁看| 亚洲精品狠狠操| 综合网中文字幕| 亚洲欧美www| 国产美女高潮久久白浆| 精品久久久视频| 日韩欧美在线视频观看| 国产精品扒开腿做| 日韩三级成人av网| 久久亚洲国产成人| 欧美裸体xxxxx| 欧美大尺度电影在线观看| 国产日韩在线播放| 一区二区三区高清国产| 欧美大片在线看| 精品成人69xx.xyz| 日韩免费av片在线观看| 亚洲第一福利在线观看| 一区二区三区国产在线观看| 色综合老司机第九色激情| 色综合91久久精品中文字幕| 亚洲毛茸茸少妇高潮呻吟| 欧美国产高跟鞋裸体秀xxxhd| 日韩亚洲第一页| 国内精品一区二区三区四区| 91精品国产91久久久| 亚洲精品视频免费在线观看| 91在线观看免费观看| 韩国日本不卡在线| 97国产一区二区精品久久呦| 欧美日韩国产中文精品字幕自在自线| 亚洲自拍偷拍色图| 国产成人一区三区| 国产精品9999| 欧美成人免费观看| 91久久久亚洲精品| 亚洲美女av网站| 国产精品美女免费视频| 97精品在线观看| 亚洲欧洲日产国码av系列天堂| 中文日韩在线观看| 亚洲免费高清视频| 国外成人免费在线播放| 成人免费在线视频网站| 欧美做受高潮电影o| 久久91精品国产91久久久| 国产精品18久久久久久麻辣| 国产精品91久久久久久| 深夜福利91大全| 国产成人精品免高潮费视频| 久久精品亚洲国产| 久久综合国产精品台湾中文娱乐网| 国产成人免费91av在线| 欧美激情性做爰免费视频| 国产精品激情av在线播放| 欧美性猛交xxxx富婆弯腰| 亚洲人成亚洲人成在线观看| 精品国产91久久久| 欧美一区视频在线| 国产福利成人在线| 国产视频在线一区二区| 久久99久久久久久久噜噜| 亚洲男人的天堂网站| 精品久久久久久久久久| 亚洲第一网站男人都懂| 亚洲高清免费观看高清完整版| 欧美精品制服第一页| 亚洲精品之草原avav久久| 97婷婷涩涩精品一区| 久久精品视频网站| 欧美激情亚洲另类| 久久99精品久久久久久琪琪| 久久香蕉国产线看观看网| 亚洲国产精品高清久久久| 国产ts人妖一区二区三区| 成人免费黄色网| 久久精品国产久精国产一老狼| 亚洲国产精品视频在线观看| 国产成人精品av在线| 国产91|九色| 亚洲精品一区中文字幕乱码| 日本在线观看天堂男亚洲| 91精品中国老女人| 国产精品视频不卡| 美女啪啪无遮挡免费久久网站| 久久亚洲欧美日韩精品专区| 欧美综合在线第二页| 裸体女人亚洲精品一区| 亚洲国产成人精品电影| 欧美电影在线观看完整版| 中文字幕国产精品|