前言
今天在酷安閒逛時下載了脈脈App,一開啟就推薦了認識的人,第一反應是獲取了我的手機號,但啟動時也沒有手機資訊相關許可權,確認了下許可權管理確實都關了,拿iphone測了下也能推薦
推測
看了下都是公司同事,我推測是基於位置推薦的,沒有定位許可權可能是通過Wifi資訊,然後我關了Wifi,改用行動網路再進入App發現推薦的使用者為預設資料,基於Wifi的資訊建立使用者資料關聯,開啟App時獲取我手機的Wifi的唯一ID建立使用者匹配推薦展示,當我登入時會關聯一個Wifi ID的列表,記錄該使用者在哪些Wifi下使用過,推薦給可能認識的人。
程式碼很簡單
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo ();
String ssid = info.getSSID();//SSID就是手機上搜尋到的wifi名字(本質是一串字元)
String bssid = info.getBSSID();//BSSID相當於無線路由器的唯一值(本質是一個MAC地址)
複製程式碼
這個Wifi的唯一ID就是BSSID,但是Android8.1及以上在不開啟定位許可權時
獲取SSID為:unknown ssid
獲取BSSID為:02:00:00:00:00:00
在Android8.1上Wifi模組原始碼有更新,Google 認為之前關於位置/定位許可權,在使用者不開啟 APP 定位許可權的情況下,APP 依然可以通過 WifiInfo 的相關資訊,比如 SSID/BSSID,去獲得使用者位置資訊,這顯然不合理,是個位置許可權的 bug。
後記
這裡記錄下這個案例在以後可以參考使用提高使用者註冊轉化率