獲取設(shè)備當(dāng)前信息庶诡、新用戶統(tǒng)計(jì)及新用戶來源追蹤
設(shè)備標(biāo)識(shí)
IDFA (32 位)
- 廣告標(biāo)識(shí)符 - Apple 專門給各廣告提供商用來追蹤用戶設(shè)置的32位標(biāo)識(shí)符惦银。默認(rèn)設(shè)置為允許追蹤。???設(shè)置 - 隱私 - 廣告 可以自行設(shè)置末誓。在被允許訪問的情況下扯俱,卸載之后?再安裝,該字符串保持不變喇澡。在不被允許情況下迅栅,iOS10 開始開發(fā)者將會(huì)讀取到32位全0的字符串;iOS10之前版本即便不被允許撩幽,開發(fā)者還是可以取到32位字符串库继,只是這時(shí)的字符串不同于被允許情況下的字符串箩艺,而且還有可能發(fā)生變化(這種情況測(cè)試設(shè)備為 iPhone6 - 中國(guó)電信 - iOS9.2 - 未越獄 - MG4H2J/A)窜醉。
[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]
UDID (40 位)
- UDID [Unique Device Identifier Description] - Apple 提供的用來區(qū)別每一個(gè)iOS設(shè)備(iPhone、iPad艺谆、iPod)的由字母和數(shù)字組成的40位字符串榨惰。該字符串與硬件設(shè)備相關(guān)。開發(fā)者會(huì)注意到静汤,添加測(cè)試機(jī)時(shí)就需要先獲取該字符串琅催,這是因?yàn)锳pple的消息推送功能及區(qū)分不同應(yīng)用程序功能上都有用到該字符串居凶。由于該字符串涉及用戶隱私,所以Apple在iOS5之后禁止開發(fā)者試圖獲取該字符串藤抡;否則應(yīng)用將被禁止上架侠碧。
IDFV
- IDFV [identifierForVendor] - 給Vendor用以標(biāo)識(shí)用戶的32位字符串,每個(gè)設(shè)備在所屬同一個(gè)Vendor的應(yīng)用里具有相同的值缠黍;雖然該標(biāo)識(shí)一定可以讀取到弄兜,但卸載以后再安裝該字符串的讀取值會(huì)發(fā)生變化。
MAC地址
- 在iOS 7中蘋果再一次無情的封殺mac地址瓷式,使用之前的方法獲取到的mac地址全部都變成了02:00:00:00:00:00替饿。
Keychain (該部分設(shè)置可參考 Demo)
- 我們可以把 Keychain 理解為一個(gè) Dictionary,其中的數(shù)據(jù)均以key-value的形式存儲(chǔ),可以對(duì)該Dictionary進(jìn)行add贸典、update视卢、get、delete四個(gè)操作廊驼。
- 對(duì)于每一個(gè)應(yīng)用來說据过,Keychain 都有兩個(gè)訪問區(qū)即私有區(qū)和公共區(qū)。私有區(qū)是一個(gè) sandbox 妒挎,本程序存儲(chǔ)的任何數(shù)據(jù)對(duì)其他程序不可見蝶俱。而要將數(shù)據(jù)存儲(chǔ)在公共區(qū),需要先聲明公共區(qū)的名稱饥漫。
- iOS的 Keychain 服務(wù)提供了一種安全的保存私密信息的方式榨呆,每個(gè)iOS應(yīng)用程序均有一個(gè)獨(dú)立的 Keychain 存儲(chǔ)。Keychain存儲(chǔ)的信息不會(huì)因APP的刪除而丟失庸队,只要是同一個(gè)APP(bunldid),即便重新安裝积蜻,依舊可以讀取到Keychain里存儲(chǔ)的數(shù)據(jù)。
- 這樣就可以將獲取到 UUID 彻消,保存到KeyChain里面竿拆。
- 刷機(jī)或重裝系統(tǒng)后 UUID 還是會(huì)改變。
- 倘若只是配置同一個(gè) bunldleid 無論卸載與否均可以使用同一個(gè) UUID ,可做如下配置宾尚。
第一:添加文件
第二:配置工程
第三:存操作
第四:取操作
deviceToken 推送
- 64位字符串,同一臺(tái)設(shè)備卸載在安裝值會(huì)改變,不被允許時(shí)全0丙笋;每次安裝都是唯一的
SimulateIDFA
- 盡可能多的讀取設(shè)備信息生成唯一標(biāo)識(shí)
應(yīng)用
數(shù)據(jù)統(tǒng)計(jì)、用戶追蹤這些是應(yīng)用推廣運(yùn)營(yíng)工作中所需的參數(shù)指標(biāo)煌贴;與技術(shù)開發(fā)工作者而言御板,解決用戶設(shè)備唯一標(biāo)識(shí)無疑是首先面對(duì)的問題。iOS 系統(tǒng)原本有一個(gè)可用于唯一標(biāo)記設(shè)備的字符串標(biāo)記牛郑,只是當(dāng)用戶關(guān)閉廣告追蹤時(shí)怠肋,便無法獲取。
- 用戶激活統(tǒng)計(jì):網(wǎng)上很多各種各樣的解決方案淹朋;但無疑歸納一下三種方式:
1> 取設(shè)備的 IDFA 笙各;
2> 盡可能多的取設(shè)備的信息然后附加隨機(jī)參數(shù)在自定義生成钉答;
3> 數(shù)據(jù)存儲(chǔ) Keychain 中。
用戶來源追蹤問題
在應(yīng)用 A 中推廣應(yīng)用 B 的下載鏈接杈抢,倘若應(yīng)用 B 想統(tǒng)計(jì)通過應(yīng)用 A 推廣鏈接而來的新用戶数尿;網(wǎng)上有資料說可以考慮 iOS9 后蘋果推出的 SafariServices 或者 iOS10 之后的剪切板共享數(shù)據(jù)。
網(wǎng)上給出的兩種方案大致如下:
1.1 iOS 因?yàn)橄到y(tǒng)封閉無法取得其他應(yīng)用的信息惶楼, iOS9 后蘋果推出的 SafariServices 可以在應(yīng)用中打開一個(gè) Safari 頁面砌创,這里可以嘗試獲取 Safari 的 cookie 。
1.2 假定未安裝 B 應(yīng)用的新用戶在應(yīng)用 A 中點(diǎn)擊了跳轉(zhuǎn)下載應(yīng)用 B 的中轉(zhuǎn)頁鲫懒;中轉(zhuǎn)頁可以將必要信息寫入系統(tǒng) cookie 嫩实。
1.3 用戶下載 B 應(yīng)用之后通過 SafariServices 獲取系統(tǒng) cookie(這里說的 cookie 不同與應(yīng)用內(nèi)部 UIWebView 或 WKWebView 所開辟的 cookie 存儲(chǔ)區(qū)) 數(shù)據(jù)。
2.1 雖然iOS系統(tǒng)封閉窥岩,但可以通過剪切板互通數(shù)據(jù)(iOS 10 一下 JS 無法讀寫剪切板)甲献。
2.2 假定未安裝 B 應(yīng)用的新用戶在應(yīng)用 A 中點(diǎn)擊了跳轉(zhuǎn)下載應(yīng)用 B 的中轉(zhuǎn)頁 ;該用戶打開的中轉(zhuǎn)頁將必要的信息通過 JS 寫入系統(tǒng)剪切板 颂翼。
2.3 用戶下載應(yīng)用 B 之后晃洒,使用原生操作剪切板的 API 讀取系統(tǒng)剪切板內(nèi)容(已嘗試,失旊Α)球及。
2.3 用戶下載應(yīng)用 B 之后,可以嘗試使用應(yīng)用 B 加載一個(gè) web 呻疹,再次借用 JS 讀取系統(tǒng)剪切板(未嘗試)吃引。
- 在應(yīng)用中使用蘋果在 iOS9 之后推出的 SafariServices 服務(wù)的確可以讀取到設(shè)備默認(rèn)瀏覽器的 cookie ;但應(yīng)用讀取過程中必須展示一個(gè)類似 Safari 打開的網(wǎng)頁刽锤,當(dāng)然你可以在其上加一層蒙版镊尺。剪切板方案測(cè)試中,JS 并未成功操作系統(tǒng)剪切板并思,所以應(yīng)用的原生 API 也就讀取不到庐氮; 但該方案可以嘗試在原生應(yīng)用中加載一個(gè) Web 頁來讀取剪切板。