iOS11 SDK新特性- DeviceCheck
通過(guò)使用DeviceCheck,你能夠在某種程度上追蹤到這個(gè)手機(jī)使用了你開(kāi)發(fā)App的情況.(即使這個(gè)App被卸載,或者機(jī)器被刷機(jī)).這么說(shuō)可能你還是覺(jué)得有點(diǎn)抽象.
1.我們舉幾個(gè)例子.
某個(gè)人養(yǎng)了一堆帳號(hào)專門用來(lái)薅羊毛,節(jié)日一到,各個(gè)帳號(hào)輪翻上陣領(lǐng)優(yōu)惠券.
這種行為電商是很反感的,電商的游戲規(guī)則基本上是一個(gè)手機(jī)一個(gè)帳號(hào)只能領(lǐng)取一次.
電商為了限制這些人惡搞,基本上就通過(guò)idfa,idfv等標(biāo)志符來(lái)識(shí)別帳號(hào)的唯一.
但是有心的人,通過(guò)卸載app,重置廣告標(biāo)志符,恢復(fù)出廠設(shè)置等種種手段來(lái)產(chǎn)生不一樣的idfa,idfv.在同一個(gè)手機(jī)上不端切換帳號(hào)來(lái)領(lǐng)券
之前很典型的是UBER,從2014年為了反欺詐,以hack的形式,獲得了設(shè)備的唯一標(biāo)識(shí)符( device Serial Number,無(wú)論你怎么刷機(jī),都能終身標(biāo)識(shí)一臺(tái)設(shè)備)
因?yàn)檫@個(gè)事情,最終Tim Cook直接指責(zé)Travis Kalanick.
Uber辯解這么做是中國(guó)無(wú)良司機(jī)刷單.........這些司機(jī)通過(guò)多個(gè)帳號(hào),然后給自己刷單獲取補(bǔ)貼
所以app對(duì)于獲取設(shè)備唯一標(biāo)識(shí)符是多么地渴望.然而蘋果基于隱私的保護(hù),牢牢把這個(gè)唯一標(biāo)識(shí)符握在自己手里.
這次放出來(lái)這個(gè)DeviceCheck功能,相當(dāng)于某種程度上幫助開(kāi)發(fā)者結(jié)合自己的業(yè)務(wù)做一些標(biāo)識(shí),特別是反欺詐.
2.DeviceCheck的實(shí)現(xiàn)方式
蘋果在自家的服務(wù)器,為每一臺(tái)設(shè)備的每一個(gè)app維護(hù)一個(gè)2bit大小的數(shù)據(jù)(沒(méi)錯(cuò),就是2bit!!!!! 就是這么小,總共4種可能),App后臺(tái)服務(wù)器通過(guò)token到蘋果后臺(tái)進(jìn)行查詢.蘋果后臺(tái)返回這個(gè)2bit的數(shù)據(jù)以及對(duì)應(yīng)的timestamp.
這樣即使app被卸載重裝,被刷機(jī),App后臺(tái)照樣可以拿到之前設(shè)置的狀態(tài).
3.應(yīng)用實(shí)例
我們還是通過(guò)第一個(gè)例子領(lǐng)取優(yōu)惠券來(lái)解釋這個(gè)流程
1.app側(cè)通過(guò)調(diào)用蘋果的api generateToken獲得一個(gè)token,然后把這個(gè)通過(guò)傳遞給后臺(tái)server,告訴后臺(tái),我要領(lǐng)優(yōu)惠券
2.后臺(tái)收到app領(lǐng)優(yōu)惠券的請(qǐng)求之后,拿著這個(gè)token先去蘋果后臺(tái)查詢這臺(tái)設(shè)備的狀態(tài).
3.后臺(tái)查詢到狀態(tài)之后根據(jù)這個(gè)2bit數(shù)據(jù)以及對(duì)應(yīng)的timestamp決定要不要發(fā)放優(yōu)惠券,
4.如果要發(fā)優(yōu)惠券,發(fā)送完優(yōu)惠券之后,后臺(tái)拿著token去更新蘋果后臺(tái)的2bit數(shù)據(jù).
4.其他需要注意的東西
4.1 蘋果這個(gè)token是設(shè)計(jì)的時(shí)候是single-use,也就是說(shuō)只能用一次.
Although the token remains valid long enough for your server to retry a specific request if necessary, you should not use a token multiple times. Instead, use this method to generate a new token.
4.2蘋果后臺(tái)和app服務(wù)器后臺(tái)通信
蘋果后臺(tái)和服務(wù)器后臺(tái)之間的通道鏈接,也是需要加密,這種消息傳遞的加密參考消息推送.
Refer:
Uber responds to report that it tracked devices after its app was deleted
DeviceCheck framework
Accessing and Modifying Per-Device Data
Apple Rolls Out New Feature That Permanently Associates Devices with Apps, Even After Deletion