Pokémon GO 老是在飄移?別再怪 GPS 定位不準了

作者 | 發布日期 2016 年 08 月 15 日 17:46 | 分類 app , 遊戲軟體 follow us in feedly

玩 Pokémon GO 的時候,一定曾發現即使人沒有移動,App 中的角色偶而也會在地圖上飄移,讓玩家可以動也不動,就來回在上百公尺的距離內截獲 PokéStop 的物資。不過,在 GPS 定位的精準度已經來到 10 公尺左右的誤差範圍後,為什麼 Pokémon GO 的角色還是會發生這種長距離的飄移?



「啟用定位」

在 2011 年,蘋果曾因為中國央視的報導,引發一起關於 iPhone 會記錄用戶所在位置的隱私爭議。當時蘋果便提出一項說明,指出由於純 GPS 定位耗時較久,可能會花上數分鐘,因此為了讓定位時間減少到幾秒,蘋果便使用了一項結合 Wi-Fi 熱點與基地台的定位技術。

這種技術是這樣的:首先,手機會掃描附近每一台 Wi-Fi 發出的訊號強度,並辨視出 Wi-Fi 分享器自己的專屬名字 BSSID,以確認手機本身和周邊任一台 Wi-Fi 的相對距離。當有了標上 BSSID 的分享器位置,以及由 Wi-Fi 訊號衰弱的程度算出的距離,手機就會經由三角定位,計算出用戶與手機所在地的座標。

由於這種與周邊 Wi-Fi 互動的技術資料量太大,無法儲存在手機,因此 iPhone 會透過蘋果自己從上億支 iPhone 收集來的「位置資料庫」來存取定位資料,只讓 iPhone 負責計算的過程,以提高定位效率。這項技術被蘋果稱作「眾包 Wi-Fi」(crowd-sourced Wi-Fi),亦即在不必真的連上 Wi-Fi 熱點的前提下,就從城鎮中無數的第三方 Wi-Fi 分享器截取定位資料,並算出手機自己的位置。

事實上除了 Wi-Fi,手機也會截取包括 iBeacon 等藍牙裝置,以及行動網路基地台的訊號,並用類似的原理輔助手機定位。總而言之,現代的智慧型手機除了會接收正在環繞地球的衛星電波,也會收集 Wi-Fi 分享器、基地台以及藍牙裝置發出的訊號,以定位手機的位置。

至於這些過程手機與用戶位置的隱私,則有賴手機廠商在傳輸定位數據時的機制,例如蘋果在回應央視的質疑時,便指出 iPhone 除了會以匿名的方式上傳 Wi-Fi 分享器的位置,以避免追蹤到特定的 iPhone 與用戶本人,從蘋果的「眾包 Wi-Fi」資料庫下載下來的暫存檔,事後也不會儲存在 iPhone 上。

 

定位機制的切換

隨著每支手機所處的位置不同,會產生無窮的因素組合,來影響手機接受定位訊號的穩定度。例如天氣與建築群的遮蔽會影響 GPS 訊號的穿透力,而遠近與傳輸過程中的反射,則會影響 Wi-Fi 訊號的衰弱程度,因此,手機其實會視情況,自動切換或並用 GPS、Wi-Fi 分享器、行動網路基地台與藍牙四種定位訊號,在用戶的所在地找出計算位置的最佳方式。這個過程反映在 Pokémon GO,便是角色會產生飄移的情形。

例如在室內時,由於建築物會阻擋 GPS 訊號,因此對於室內用戶來說,定位的機制可能會相對依賴 Wi-Fi 熱點或 4G 訊號一點,這三者的精準度可能有著數十公尺的落差。此外,由於 iOS 的機制會強制第三方 App 只有在使用 App 期間才能使用手機的定位功能,使得 Pokémon GO 會在每次重啟後重新定位,這也給了 Pokémon GO 訓練師一個飄移的機會。

至於為什麼關閉 Pokémon GO 後立刻重啟 App,定位的結果會沒有變化,原因則可能是因為手機還留著從資料庫下載下來的熱點與基地台位置暫存檔以及計算結果,使得手機暫時還不需要重新定位。一旦系統設定的暫存檔刪除時間到了,手機才會需要再重新下載基地台或熱點的數據,並計算座標,從而造成飄移的可能。

反過來,當用戶需要讓角色飄移以獲得物資或捕獲神奇寶貝,除了可以等上一小段時間再重新開啟 App 以重新定位,也可以輪流開關 Wi-Fi、GPS、藍牙或行動網路,藉由強制切換不同的定位機制來實現飄移。

(首圖來源:達志影像) 

發表迴響