iOS设备唯一标识(可以用版)
由于UDID和OpenUDID被禁用,系統自帶的的識別唯一標識有兩種
廣告標示符(IDFA-identifierForIdentifier)
這是iOS 6中另外一個新的方法,advertisingIdentifier是新框架AdSupport.framework的一部分。ASIdentifierManager單例提供了一個方法advertisingIdentifier,通過調用該方法會返回一個上面提到的NSUUID實例。
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對象。
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
轉載于:https://www.cnblogs.com/hxwj/p/5383671.html
總結
以上是生活随笔為你收集整理的iOS设备唯一标识(可以用版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20145237第六周学习总结
- 下一篇: Tomcat相关目录及配置文件总结