獲取設(shè)備唯一標(biāo)識(shí)符
可作為設(shè)備唯一標(biāo)識(shí)的幾種方法:
- ** UDID(Unique Device Identifier)**。iOS5以后不可用。
- CFUUID。獲得的這個(gè)CFUUID值系統(tǒng)并沒有存儲(chǔ)。每次調(diào)用CFUUIDCreate,系統(tǒng)都會(huì)返回一個(gè)新的唯一標(biāo)示符。
- NSUUID。跟CFUUID一樣,這個(gè)值系統(tǒng)也不會(huì)存儲(chǔ),每次調(diào)用的時(shí)候都會(huì)獲得一個(gè)新的唯一標(biāo)示符。
- MAC Address。iOS7以后不可用,取不到正確的值,都是相同的值。
- OPEN UDID。生成碼-剪貼板,iOS7以后不能用,GitHub中已啟用。
- 廣告標(biāo)示符(IDFA-identifierForIdentifier)。返回NSUUID實(shí)例,用戶還原廣告,會(huì)重置,還原系統(tǒng)會(huì)重置。審核規(guī)定,獲取IDFA而不使用廣告功能會(huì)被拒。
- Vindor標(biāo)示符 (IDFV-identifierForVendor) 。返回NSUUID實(shí)例,相同供應(yīng)商下所有APP刪除,會(huì)變
-
推送token+bundle_id 。依靠APNS,需要網(wǎng)
關(guān)于這幾種標(biāo)識(shí)符的介紹可以看這篇文章,也可以看《The Developer’s Guide to Unique Identifiers》 (中文翻譯)
下圖是總結(jié)的幾種標(biāo)識(shí)符的情況。
獲取設(shè)備標(biāo)識(shí)符.png
唯一標(biāo)識(shí)符獲取策略
直接使用NSUUID,獲取方法:
NSString *uuid = [[NSUUID UUID] UUIDString];
使用蘋果提供的Vindor標(biāo)示符,獲取方法
NSString *IDFVString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
如果用戶卸載了同一個(gè)vendor對應(yīng)的所有程序,然后在重新安裝同一個(gè)vendor提供的程序,此時(shí)identifierForVendor會(huì)被重置。
因此,為了使唯一標(biāo)識(shí)符保存更持久,將IDFV(或UUID)存儲(chǔ)到鑰匙串中,下次使用先從鑰匙串取。
關(guān)于鑰匙串的使用,可以看《iOS安全-鑰匙串服務(wù)(iOS Keychain Services Tasks)》
新設(shè)備識(shí)別
關(guān)于新設(shè)備識(shí)別,分為兩種,APP新設(shè)備和賬戶新設(shè)備:
- APP新設(shè)備,即第一次安裝當(dāng)前APP。識(shí)別方法:鑰匙串中存儲(chǔ)UUID,啟動(dòng)時(shí)先檢查鑰匙串,如果取不到存儲(chǔ)的UUID,即視為新設(shè)備,生成UUID,存儲(chǔ)到鑰匙串中。后臺(tái)記錄啟動(dòng)的UUID,可用來統(tǒng)計(jì)下載轉(zhuǎn)化率等數(shù)據(jù)。
UUID生成記錄流程如下圖所示:
UUID存儲(chǔ)使用流程.png
- 賬戶新設(shè)備,跟用戶賬戶關(guān)聯(lián)。即當(dāng)前賬戶第一次在這個(gè)設(shè)備上登錄,視為用戶的新設(shè)備。后臺(tái)記錄用戶登錄設(shè)備信息,可用做登錄的二次驗(yàn)證。
設(shè)備鎖登錄流程如下圖所示:
設(shè)備鎖登錄流程.png
后臺(tái)記錄
后臺(tái)記錄APP相關(guān)信息,用作安全管理和統(tǒng)計(jì)。
下圖列出部分常用統(tǒng)計(jì)信息,
后臺(tái)統(tǒng)計(jì)信息.png
下圖是之前關(guān)于數(shù)據(jù)統(tǒng)計(jì)分析的整理:
App數(shù)據(jù)分析體系.png
統(tǒng)計(jì)策略
關(guān)于統(tǒng)計(jì)策略,參考第三方統(tǒng)計(jì),列出幾點(diǎn)。
上報(bào)策略
- 統(tǒng)計(jì)數(shù)據(jù)啟動(dòng)發(fā)送。(DEBUG時(shí),實(shí)時(shí)發(fā)送)
- 默認(rèn)開始crash收集。
- log收集,log加密,發(fā)送間隔。
頁面計(jì)時(shí)
頁面進(jìn)入時(shí),開始計(jì)時(shí),退出頁面記錄時(shí)長。
事件統(tǒng)計(jì)
后臺(tái)設(shè)置事件ID,前端根據(jù)ID統(tǒng)計(jì)上報(bào)。