摘要:在‘照明彈’裏,用戶可以看到某一應用‘自啓動’、被其他應用啓動以及讀取設備數據等具體行爲,手機 App 原本不爲人知的動作一覽無餘。由於可以自啓動,一些 App 就開始利用這個 API 接口暗戳戳地自己啓動自己,一方面刷 DAU(日活用戶),另一方面在後臺收集數據。

本文來自極客公園

近期,小米 MIUI 的一次更新,引起了軒然大波。

小米手機最新版操作系統——MIUI12 中,有一個叫做‘照明彈’的功能。顧名思義,這個功能是要把一些之前在黑暗中的東西暴露在強光下,讓用戶一目瞭然。

在‘照明彈’裏,用戶可以看到某一應用‘自啓動’、被其他應用啓動以及讀取設備數據等具體行爲,手機 App 原本不爲人知的動作一覽無餘。

MIUI12 照明彈功能部分截圖,左側爲App自啓動情況,右側爲App被喚醒情況 | MIUI

個別應用在後臺‘反覆橫跳’,頻繁啓動各種‘全家桶’應用,讀取用戶隱私信息,這些問題在社交網絡上引起了很多數碼圈和產品圈人士的討論。這些應用爲什麼要在後臺反覆刷數據?對開發廠商來說,自啓動和讀數據會帶來哪些好處?普通用戶又該如何防範呢?

刷用戶、收數據,APP 啓動爲了什麼?

App 自啓動其實不是什麼新鮮事,安卓平臺也賦予開發者這種能力,只是很多時候在商業背景下,這一能力被濫用了。

要想搞明白 App 的自啓動,首先要清楚安卓的核心。它是一個開放開源的平臺,追求的是被儘可能多的設備使用。因此對於安卓來說,它想要覆蓋的,並不僅僅是手機市場,像廣告機、自助購票機等很多場景化的設備也是安卓的獵物。

想要收穫更多的應用場景,就要有足夠多的接口支持。對於廣告機等設備來說,開機自動進入應用程序、即插即用是剛需,因此安卓在設計之初就支持應用程序自啓動,有需求的 App 只需調用 API 接口即可實現。

安卓的本意是好的,但卻被部分開發者用壞了。由於可以自啓動,一些 App 就開始利用這個 API 接口暗戳戳地自己啓動自己,一方面刷 DAU(日活用戶),另一方面在後臺收集數據。

不要小看你手機裏的數據,它們在應用程序開發商那裏可是寶貝。地理位置、錄音、通訊錄、剪貼板、相冊等等都是有料可挖的數據金礦。

以打車應用爲例。很多時候,爲了讓用戶體驗更好,平臺會設置一項貼心功能,用戶在打開 App 的同時,系統自動猜出用戶想要去的目的地。比如用戶早上在家附近打開叫車 App,系統會自動推薦目的地是公司所在地。傍晚用戶在公司附近打開 App,系統猜測用戶是要接小孩放學,自動推薦孩子的學校地址。

這一功能的實現主要基於用戶在平臺上的交易記錄,但如果用戶的交易數據不足夠多時,系統就需要更豐富的用戶地理位置數據來預測用戶的生活軌跡。這一問題有一個簡便可行的解決方案,那就是每隔一段時間在後臺喚醒 App,自動收集用戶的地理位置。

又如,現在支付 App 都有免密支付的功能。用戶在經常活動的位置進行小額交易,是不需要輸入密碼或者刷臉驗證的。這背後也需要 App 定期喚醒,獲得用戶的地理位置數據,從而進行風險控制。

從 App 自啓動中受益的不僅僅是打車、支付這兩個場景。事實上,對於大多數 App 來說,擁有自啓動的能力都是一個零本萬利的事。甚至爲了以防哪天萬一用得到,很多 App 在開發之初就預留了這一能力。

一般而言,大公司的 App 受到更多的監管,會相對規範,自啓動的目的更多是爲了更好地服務用戶。相較之下,一些小公司的應用程序路子會更野一些。

比如偷偷啓動麥克風監聽或錄音,或者訪問相冊獲取隱私照片等等。這些用戶數據會被打包售賣,甚至有可能被賣給黑產。這樣一來,用戶不僅面臨着隱私泄漏的風險,更有可能遭受人身和財產安全的威脅。

互相喚醒:卡頓、發熱的元兇

安卓的開放帶來了非常多的‘玩法’,其中最爲典型的要數 App 的雙進程。簡單的理解是,當用戶啓動 App 時,同時啓動了這一 App 的兩個進程。當用戶關掉 App 時,一個進程被殺死,另一個仍在後臺運行。

這一操作的目的其實和自啓動一樣:刷 DAU,拿用戶數據。二者對用戶帶來的困擾也是相同的:隱私泄漏。另外,由於這個‘殺不死’的進程一直在後臺運行,導致用戶手機很快就會發燙、卡頓,需要關機重啓,使用感受直線下降。

事實上,‘進程保活’一直是 App 開發人員與安卓系統的對抗焦點。對於從草莽時期長出的很多 App 來說,如果後臺進程被殺死,那麼其‘商業模型’將受到根本性的動搖。但是安卓希望對終端用戶友好,所以在每一個版本的升級中,都在更新阻礙開發者‘進程保活’的方法。

魔高一尺,道高一丈。在長期與安卓抗爭的過程中,App 開發人員開始抱團取暖。同一生態下的 App 互相合作,一個被殺死了,另一個再把它拉起來。在技術社區內,這一方法被稱爲‘進程永生技術’。

在開篇的‘照明彈’截圖中,你會發現有些 App 會在後臺喚起另一個 App,有很大可能是在互相保活。另外,一個 App 喚醒另一個 App,也可能是爲了廣告刷量。

比如 A 公司在 B 公司的 App 上投廣告,那麼通過 B 向 A 導流的每一次點擊都會爲 B 帶來營收。所以 B 在後臺假裝用戶點擊 A,那麼在 A 看來就是一個‘真實用戶的點擊’。B 欺騙 A,從廣告效果來說,肯定會對 A 造成損失。

除保活和刷量之外,App 之間互相喚醒還有交換數據的可能。舉例而言,社交 App 的數據對網購 App 來說很有用。通過關係鏈的拉取,能夠精準進行用戶畫像,識別購買需求。

不過,這種數據交換的操作在巨頭們沒有形成生態之前,是通過 API 接口發生在用戶手機上的。在有了生態,特別是各公司紛紛開始建立中臺之後,用戶數據的交換就慢慢地轉移到服務器層面了。

‘照明’之後,接下來怎麼辦?

玩法這麼多,感覺防不勝防?事實上,最基本也是最有效的防範,是用戶對 App 權限的控制。如果 App 沒有訪問權限,那麼它每天自啓動多少次都是徒勞。

但並不是所有的人都有意識有能力關注手機的權限管理,對於上了年紀的人來說更似如此。因此,監管方和平臺方需要共同負起責任。

平臺方是否有動力負這個責任,其實是需要打個問號的。要想識別違規 App 並督促其下架整改,需要成本投入。目前國內很多應用商店的背後,是手機硬件廠商。如果手機廠商抱着‘賣一臺算一臺’的想法,後續服務就很難跟上。

MIUI 是小米商業化的重要支點,因此從商業角度來說,小米有動力做這件事。‘照明彈’功能也確實給 MIUI 平臺上 App 的合規性帶來了提醒。誰自啓動了,誰啓動了誰,誰的啓動請求被系統拒絕了。。。。。。 這些原本就應該讓用戶知道的信息如今被清晰地展現出來。

‘照明彈’推出之後,小米獲得了不少好評,但也有人說是個噱頭,因爲並沒有從根本上解決問題。即便是小米,可能也沒勇氣徹底讓違規的 App 整改後再上架。另外,大部分人或許根本沒有意識到這照明彈到底照亮了什麼。所以,關於用戶數據保護和商業倫理的提升,靠企業的自我約束只是起點,這件事最終只有靠更多用戶的覺醒來完成。

責任編輯:宋德勝

圖片來源:MIUI

相關文章