近期,小米 MIUI 的一次更新,引起了軒然大波。
小米手機(jī)最新版操作系統(tǒng)—;—;MIUI12 中,有一個(gè)叫做「照明彈」的功能。顧名思義,這個(gè)功能是要把一些之前在黑暗中的東西暴露在強(qiáng)光下,讓用戶(hù)一目了然。
在「照明彈」里,用戶(hù)可以看到某一應(yīng)用「自啟動(dòng)」、被其他應(yīng)用啟動(dòng)以及讀取設(shè)備數(shù)據(jù)等具體行為,手機(jī) App 原本不為人知的動(dòng)作一覽無(wú)余。
MIUI12 照明彈功能部分截圖,左側(cè)為App自啟動(dòng)情況,右側(cè)為App被喚醒情況 | MIUI
個(gè)別應(yīng)用在后臺(tái)「反復(fù)橫跳」,頻繁啟動(dòng)各種「全家桶」應(yīng)用,讀取用戶(hù)隱私信息,這些問(wèn)題在社交網(wǎng)絡(luò)上引起了很多數(shù)碼圈和產(chǎn)品圈人士的討論。這些應(yīng)用為什么要在后臺(tái)反復(fù)刷數(shù)據(jù)?對(duì)開(kāi)發(fā)廠(chǎng)商來(lái)說(shuō),自啟動(dòng)和讀數(shù)據(jù)會(huì)帶來(lái)哪些好處?普通用戶(hù)又該如何防范呢?
刷用戶(hù)、收數(shù)據(jù),APP 啟動(dòng)為了什么?
App 自啟動(dòng)其實(shí)不是什么新鮮事,安卓平臺(tái)也賦予開(kāi)發(fā)者這種能力,只是很多時(shí)候在商業(yè)背景下,這一能力被濫用了。
要想搞明白 App 的自啟動(dòng),首先要清楚安卓的核心。它是一個(gè)開(kāi)放開(kāi)源的平臺(tái),追求的是被盡可能多的設(shè)備使用。因此對(duì)于安卓來(lái)說(shuō),它想要覆蓋的,并不僅僅是手機(jī)市場(chǎng),像廣告機(jī)、自助購(gòu)票機(jī)等很多場(chǎng)景化的設(shè)備也是安卓的獵物。
想要收獲更多的應(yīng)用場(chǎng)景,就要有足夠多的接口支持。對(duì)于廣告機(jī)等設(shè)備來(lái)說(shuō),開(kāi)機(jī)自動(dòng)進(jìn)入應(yīng)用程序、即插即用是剛需,因此安卓在設(shè)計(jì)之初就支持應(yīng)用程序自啟動(dòng),有需求的 App 只需調(diào)用 API 接口即可實(shí)現(xiàn)。
安卓的本意是好的,但卻被部分開(kāi)發(fā)者用壞了。由于可以自啟動(dòng),一些 App 就開(kāi)始利用這個(gè) API 接口暗戳戳地自己?jiǎn)?dòng)自己,一方面刷 DAU(日活用戶(hù)),另一方面在后臺(tái)收集數(shù)據(jù)。
不要小看你手機(jī)里的數(shù)據(jù),它們?cè)趹?yīng)用程序開(kāi)發(fā)商那里可是寶貝。地理位置、錄音、通訊錄、剪貼板、相冊(cè)等等都是有料可挖的數(shù)據(jù)金礦。
以打車(chē)應(yīng)用為例。很多時(shí)候,為了讓用戶(hù)體驗(yàn)更好,平臺(tái)會(huì)設(shè)置一項(xiàng)貼心功能,用戶(hù)在打開(kāi) App 的同時(shí),系統(tǒng)自動(dòng)猜出用戶(hù)想要去的目的地。比如用戶(hù)早上在家附近打開(kāi)叫車(chē) App,系統(tǒng)會(huì)自動(dòng)推薦目的地是公司所在地。傍晚用戶(hù)在公司附近打開(kāi) App,系統(tǒng)猜測(cè)用戶(hù)是要接小孩放學(xué),自動(dòng)推薦孩子的學(xué)校地址。
這一功能的實(shí)現(xiàn)主要基于用戶(hù)在平臺(tái)上的交易記錄,但如果用戶(hù)的交易數(shù)據(jù)不足夠多時(shí),系統(tǒng)就需要更豐富的用戶(hù)地理位置數(shù)據(jù)來(lái)預(yù)測(cè)用戶(hù)的生活軌跡。這一問(wèn)題有一個(gè)簡(jiǎn)便可行的解決方案,那就是每隔一段時(shí)間在后臺(tái)喚醒 App,自動(dòng)收集用戶(hù)的地理位置。
又如,現(xiàn)在支付 App 都有免密支付的功能。用戶(hù)在經(jīng)常活動(dòng)的位置進(jìn)行小額交易,是不需要輸入密碼或者刷臉驗(yàn)證的。這背后也需要 App 定期喚醒,獲得用戶(hù)的地理位置數(shù)據(jù),從而進(jìn)行風(fēng)險(xiǎn)控制。
從 App 自啟動(dòng)中受益的不僅僅是打車(chē)、支付這兩個(gè)場(chǎng)景。事實(shí)上,對(duì)于大多數(shù) App 來(lái)說(shuō),擁有自啟動(dòng)的能力都是一個(gè)零本萬(wàn)利的事。甚至為了以防哪天萬(wàn)一用得到,很多 App 在開(kāi)發(fā)之初就預(yù)留了這一能力。
一般而言,大公司的 App 受到更多的監(jiān)管,會(huì)相對(duì)規(guī)范,自啟動(dòng)的目的更多是為了更好地服務(wù)用戶(hù)。相較之下,一些小公司的應(yīng)用程序路子會(huì)更野一些。
比如偷偷啟動(dòng)麥克風(fēng)監(jiān)聽(tīng)或錄音,或者訪(fǎng)問(wèn)相冊(cè)獲取隱私照片等等。這些用戶(hù)數(shù)據(jù)會(huì)被打包售賣(mài),甚至有可能被賣(mài)給黑產(chǎn)。這樣一來(lái),用戶(hù)不僅面臨著隱私泄漏的風(fēng)險(xiǎn),更有可能遭受人身和財(cái)產(chǎn)安全的威脅。
互相喚醒:卡頓、發(fā)熱的元兇
安卓的開(kāi)放帶來(lái)了非常多的「玩法」,其中最為典型的要數(shù) App 的雙進(jìn)程。簡(jiǎn)單的理解是,當(dāng)用戶(hù)啟動(dòng) App 時(shí),同時(shí)啟動(dòng)了這一 App 的兩個(gè)進(jìn)程。當(dāng)用戶(hù)關(guān)掉 App 時(shí),一個(gè)進(jìn)程被殺死,另一個(gè)仍在后臺(tái)運(yùn)行。
這一操作的目的其實(shí)和自啟動(dòng)一樣:刷 DAU,拿用戶(hù)數(shù)據(jù)。二者對(duì)用戶(hù)帶來(lái)的困擾也是相同的:隱私泄漏。另外,由于這個(gè)「殺不死」的進(jìn)程一直在后臺(tái)運(yùn)行,導(dǎo)致用戶(hù)手機(jī)很快就會(huì)發(fā)燙、卡頓,需要關(guān)機(jī)重啟,使用感受直線(xiàn)下降。
事實(shí)上,「進(jìn)程?;睢挂恢笔?App 開(kāi)發(fā)人員與安卓系統(tǒng)的對(duì)抗焦點(diǎn)。對(duì)于從草莽時(shí)期長(zhǎng)出的很多 App 來(lái)說(shuō),如果后臺(tái)進(jìn)程被殺死,那么其「商業(yè)模型」將受到根本性的動(dòng)搖。但是安卓希望對(duì)終端用戶(hù)友好,所以在每一個(gè)版本的升級(jí)中,都在更新阻礙開(kāi)發(fā)者「進(jìn)程?;睢沟姆椒?。
魔高一尺,道高一丈。在長(zhǎng)期與安卓抗?fàn)幍倪^(guò)程中,App 開(kāi)發(fā)人員開(kāi)始抱團(tuán)取暖。同一生態(tài)下的 App 互相合作,一個(gè)被殺死了,另一個(gè)再把它拉起來(lái)。在技術(shù)社區(qū)內(nèi),這一方法被稱(chēng)為「進(jìn)程永生技術(shù)」。
在開(kāi)篇的「照明彈」截圖中,你會(huì)發(fā)現(xiàn)有些 App 會(huì)在后臺(tái)喚起另一個(gè) App,有很大可能是在互相?;睢A硗?,一個(gè) App 喚醒另一個(gè) App,也可能是為了廣告刷量。
比如 A 公司在 B 公司的 App 上投廣告,那么通過(guò) B 向 A 導(dǎo)流的每一次點(diǎn)擊都會(huì)為 B 帶來(lái)營(yíng)收。所以 B 在后臺(tái)假裝用戶(hù)點(diǎn)擊 A,那么在 A 看來(lái)就是一個(gè)「真實(shí)用戶(hù)的點(diǎn)擊」。B 欺騙 A,從廣告效果來(lái)說(shuō),肯定會(huì)對(duì) A 造成損失。
除?;詈退⒘恐猓珹pp 之間互相喚醒還有交換數(shù)據(jù)的可能。舉例而言,社交 App 的數(shù)據(jù)對(duì)網(wǎng)購(gòu) App 來(lái)說(shuō)很有用。通過(guò)關(guān)系鏈的拉取,能夠精準(zhǔn)進(jìn)行用戶(hù)畫(huà)像,識(shí)別購(gòu)買(mǎi)需求。
不過(guò),這種數(shù)據(jù)交換的操作在巨頭們沒(méi)有形成生態(tài)之前,是通過(guò) API 接口發(fā)生在用戶(hù)手機(jī)上的。在有了生態(tài),特別是各公司紛紛開(kāi)始建立中臺(tái)之后,用戶(hù)數(shù)據(jù)的交換就慢慢地轉(zhuǎn)移到服務(wù)器層面了。
「照明」之后,接下來(lái)怎么辦?
玩法這么多,感覺(jué)防不勝防?事實(shí)上,最基本也是最有效的防范,是用戶(hù)對(duì) App 權(quán)限的控制。如果 App 沒(méi)有訪(fǎng)問(wèn)權(quán)限,那么它每天自啟動(dòng)多少次都是徒勞。
但并不是所有的人都有意識(shí)有能力關(guān)注手機(jī)的權(quán)限管理,對(duì)于上了年紀(jì)的人來(lái)說(shuō)更似如此。因此,監(jiān)管方和平臺(tái)方需要共同負(fù)起責(zé)任。
平臺(tái)方是否有動(dòng)力負(fù)這個(gè)責(zé)任,其實(shí)是需要打個(gè)問(wèn)號(hào)的。要想識(shí)別違規(guī) App 并督促其下架整改,需要成本投入。目前國(guó)內(nèi)很多應(yīng)用商店的背后,是手機(jī)硬件廠(chǎng)商。如果手機(jī)廠(chǎng)商抱著「賣(mài)一臺(tái)算一臺(tái)」的想法,后續(xù)服務(wù)就很難跟上。
MIUI 是小米商業(yè)化的重要支點(diǎn),因此從商業(yè)角度來(lái)說(shuō),小米有動(dòng)力做這件事。「照明彈」功能也確實(shí)給 MIUI 平臺(tái)上 App 的合規(guī)性帶來(lái)了提醒。誰(shuí)自啟動(dòng)了,誰(shuí)啟動(dòng)了誰(shuí),誰(shuí)的啟動(dòng)請(qǐng)求被系統(tǒng)拒絕了...... 這些原本就應(yīng)該讓用戶(hù)知道的信息如今被清晰地展現(xiàn)出來(lái)。
「照明彈」推出之后,小米獲得了不少好評(píng),但也有人說(shuō)是個(gè)噱頭,因?yàn)椴](méi)有從根本上解決問(wèn)題。即便是小米,可能也沒(méi)勇氣徹底讓違規(guī)的 App 整改后再上架。另外,大部分人或許根本沒(méi)有意識(shí)到這照明彈到底照亮了什么。所以,關(guān)于用戶(hù)數(shù)據(jù)保護(hù)和商業(yè)倫理的提升,靠企業(yè)的自我約束只是起點(diǎn),這件事最終只有靠更多用戶(hù)的覺(jué)醒來(lái)完成。