設備唯一標識(IDFA、UDID、IDFV、MAC地址、Keychain-鑰匙串)

獲取設備當前信息、新用戶統(tǒng)計及新用戶來源追蹤

設備標識

IDFA (32 位)

  • 廣告標識符 - Apple 專門給各廣告提供商用來追蹤用戶設置的32位標識符。默認設置為允許追蹤。???設置 - 隱私 - 廣告 可以自行設置。在被允許訪問的情況下,卸載之后?再安裝,該字符串保持不變。在不被允許情況下,iOS10 開始開發(fā)者將會讀取到32位全0的字符串;iOS10之前版本即便不被允許,開發(fā)者還是可以取到32位字符串,只是這時的字符串不同于被允許情況下的字符串,而且還有可能發(fā)生變化(這種情況測試設備為 iPhone6 - 中國電信 - iOS9.2 - 未越獄 - MG4H2J/A)。
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]

UDID (40 位)

  • UDID [Unique Device Identifier Description] - Apple 提供的用來區(qū)別每一個iOS設備(iPhone、iPad、iPod)的由字母和數(shù)字組成的40位字符串。該字符串與硬件設備相關。開發(fā)者會注意到,添加測試機時就需要先獲取該字符串,這是因為Apple的消息推送功能及區(qū)分不同應用程序功能上都有用到該字符串。由于該字符串涉及用戶隱私,所以Apple在iOS5之后禁止開發(fā)者試圖獲取該字符串;否則應用將被禁止上架。

IDFV

  • IDFV [identifierForVendor] - 給Vendor用以標識用戶的32位字符串,每個設備在所屬同一個Vendor的應用里具有相同的值;雖然該標識一定可以讀取到,但卸載以后再安裝該字符串的讀取值會發(fā)生變化。

MAC地址

  • 在iOS 7中蘋果再一次無情的封殺mac地址,使用之前的方法獲取到的mac地址全部都變成了02:00:00:00:00:00。

Keychain (該部分設置可參考 Demo

  • 我們可以把 Keychain 理解為一個 Dictionary,其中的數(shù)據(jù)均以key-value的形式存儲,可以對該Dictionary進行add、update、get、delete四個操作。
  • 對于每一個應用來說,Keychain 都有兩個訪問區(qū)即私有區(qū)和公共區(qū)。私有區(qū)是一個 sandbox ,本程序存儲的任何數(shù)據(jù)對其他程序不可見。而要將數(shù)據(jù)存儲在公共區(qū),需要先聲明公共區(qū)的名稱。
  • iOS的 Keychain 服務提供了一種安全的保存私密信息的方式,每個iOS應用程序均有一個獨立的 Keychain 存儲。Keychain存儲的信息不會因APP的刪除而丟失,只要是同一個APP(bunldid),即便重新安裝,依舊可以讀取到Keychain里存儲的數(shù)據(jù)。
  • 這樣就可以將獲取到 UUID ,保存到KeyChain里面。
  • 刷機或重裝系統(tǒng)后 UUID 還是會改變。
  • 倘若只是配置同一個 bunldleid 無論卸載與否均可以使用同一個 UUID ,可做如下配置。

第一:添加文件

img1.png

第二:配置工程

img2.png

第三:存操作

img3.png

第四:取操作

img4.png

deviceToken 推送

  • 64位字符串,同一臺設備卸載在安裝值會改變,不被允許時全0;每次安裝都是唯一的

SimulateIDFA

  • 盡可能多的讀取設備信息生成唯一標識

應用

數(shù)據(jù)統(tǒng)計、用戶追蹤這些是應用推廣運營工作中所需的參數(shù)指標;與技術開發(fā)工作者而言,解決用戶設備唯一標識無疑是首先面對的問題。iOS 系統(tǒng)原本有一個可用于唯一標記設備的字符串標記,只是當用戶關閉廣告追蹤時,便無法獲取。

  • 用戶激活統(tǒng)計:網(wǎng)上很多各種各樣的解決方案;但無疑歸納一下三種方式:

1> 取設備的 IDFA ;

2> 盡可能多的取設備的信息然后附加隨機參數(shù)在自定義生成;

3> 數(shù)據(jù)存儲 Keychain 中。

用戶來源追蹤問題

  • 在應用 A 中推廣應用 B 的下載鏈接,倘若應用 B 想統(tǒng)計通過應用 A 推廣鏈接而來的新用戶;網(wǎng)上有資料說可以考慮 iOS9 后蘋果推出的 SafariServices 或者 iOS10 之后的剪切板共享數(shù)據(jù)。

  • 網(wǎng)上給出的兩種方案大致如下:

1.1 iOS 因為系統(tǒng)封閉無法取得其他應用的信息, iOS9 后蘋果推出的 SafariServices 可以在應用中打開一個 Safari 頁面,這里可以嘗試獲取 Safari 的 cookie 。

1.2 假定未安裝 B 應用的新用戶在應用 A 中點擊了跳轉下載應用 B 的中轉頁;中轉頁可以將必要信息寫入系統(tǒng) cookie 。

1.3 用戶下載 B 應用之后通過 SafariServices 獲取系統(tǒng) cookie(這里說的 cookie 不同與應用內部 UIWebView 或 WKWebView 所開辟的 cookie 存儲區(qū)) 數(shù)據(jù)。

2.1 雖然iOS系統(tǒng)封閉,但可以通過剪切板互通數(shù)據(jù)(iOS 10 一下 JS 無法讀寫剪切板)。

2.2 假定未安裝 B 應用的新用戶在應用 A 中點擊了跳轉下載應用 B 的中轉頁 ;該用戶打開的中轉頁將必要的信息通過 JS 寫入系統(tǒng)剪切板 。

2.3 用戶下載應用 B 之后,使用原生操作剪切板的 API 讀取系統(tǒng)剪切板內容(已嘗試,失?。?。

2.3 用戶下載應用 B 之后,可以嘗試使用應用 B 加載一個 web ,再次借用 JS 讀取系統(tǒng)剪切板(未嘗試)。

  • 在應用中使用蘋果在 iOS9 之后推出的 SafariServices 服務的確可以讀取到設備默認瀏覽器的 cookie ;但應用讀取過程中必須展示一個類似 Safari 打開的網(wǎng)頁,當然你可以在其上加一層蒙版。剪切板方案測試中,JS 并未成功操作系統(tǒng)剪切板,所以應用的原生 API 也就讀取不到; 但該方案可以嘗試在原生應用中加載一個 Web 頁來讀取剪切板。
參考
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容