最近Pokemon Go 火的不行蜻底,結(jié)果人家服務(wù)器扛不住了革为,只接受GPS定位信息在澳洲的客戶(hù)端的登陸請(qǐng)求总寒。今天自己搞了個(gè)小Demo灭必,在未越獄的iPhone上把系統(tǒng)的GPS定位信息給改了播瞳。
步驟:
在Xcode8-beta
上新建一個(gè)空白工程 -> Edit scheme
-> Default Location
選澳洲 -> Device選真機(jī)設(shè)備掸刊,Run
現(xiàn)在,看看自己手機(jī)(我是iOS10系統(tǒng)):
1.微信:
2.高德地圖:
3.系統(tǒng)相機(jī)隨便拍個(gè)照赢乓,查看位置信息
4.查找我的iPhone
現(xiàn)在美中不足是忧侧,即使應(yīng)用刪除,GPS定位信息還是假的,需要?jiǎng)h除應(yīng)用重啟手機(jī)牌芋,才能恢復(fù)正常GPS蚓炬。Demo我放在了Github上https://github.com/sueLan/RYFakeGPS。
用免費(fèi)開(kāi)發(fā)者賬號(hào)也可以在真機(jī)上調(diào)試http://www.reibang.com/p/540e722b8eff
早有Fake GPS這種提供虛擬定位信息的應(yīng)用躺屁。勞資以前沒(méi)有研究過(guò).也有人逆向微博肯夏,在運(yùn)行時(shí)修改定位信. 但這些方法的前提是你有個(gè)越獄設(shè)備。Quora上早也有討論過(guò),如何未越獄設(shè)備上如何修改GPS定位信息.各路神招:重載CLLocationManager方法驯击、安裝GPS中繼器假冒GPS信號(hào)烁兰、設(shè)備代理、iOS模擬器Debug模式的Location模擬......
GPS定位原理
我們先來(lái)看一個(gè)博客徊都,iOS定位原理.我抄了一段:
GPS定位原理:
這個(gè)是美國(guó)軍方搞的, 軍民兩用, 但仍然完全受軍方控制(比如可以隨時(shí)隨地設(shè)置某個(gè)地區(qū)收到的信號(hào)與否及其精度), 其原理就是:利用天上的衛(wèi)星(共24顆)不斷地廣播信號(hào), 地面的GPS接收設(shè)備收到信號(hào)后, 通過(guò)分析多個(gè)衛(wèi)星信號(hào)沪斟,就可以計(jì)算出地球坐標(biāo), GPS保證全球任何一個(gè)地方(98%)都可以同時(shí)收到至少4個(gè)衛(wèi)星的信號(hào), 從而可以準(zhǔn)確確定您的經(jīng)緯度以及海拔位置. GPS定位精度可達(dá)10米以?xún)?nèi), 不過(guò)這是美國(guó)軍方控制的, 戰(zhàn)爭(zhēng)時(shí)期可能變的不穩(wěn)定或者誤報(bào). (不過(guò)我國(guó)也有自己的系統(tǒng), 北斗系統(tǒng), 目前已經(jīng)亞洲的覆蓋, 還在推廣中)
衛(wèi)星定位必須要能收到衛(wèi)星信號(hào),因?yàn)樾l(wèi)星信號(hào)都是很微弱的暇矫,雖然iPhone 4開(kāi)始提升了GPS硬件的靈敏度主之,但仍然需要在窗戶(hù)旁,或者戶(hù)外使用李根,才能確保衛(wèi)星信號(hào)的強(qiáng)度和穩(wěn)定性槽奕。
與基站定位和WIFI定位相比,GPS耗電最大房轿,速度最慢史翘,但是精度最高。
而iPhone的GPS與純粹的GPS定位不同, 稱(chēng)為A-GPS, 即輔助GPS.(比GPS更優(yōu)冀续,不過(guò)GPS也分芯片和性能的琼讽,不是說(shuō)所有的AGPS比所有的GPS都好)
因?yàn)镚PS定位中最耗時(shí)、最耗電的就是獲取當(dāng)前天上的衛(wèi)星信息洪唐,哪些衛(wèi)星可見(jiàn)钻蹬、在什么位置、時(shí)鐘是多少等等凭需,這個(gè)過(guò)程可能花費(fèi)數(shù)十秒甚至幾分鐘问欠,而AGPS就是利用網(wǎng)絡(luò),首先將基站定位或者WIFI定位獲得的大概位置發(fā)到遠(yuǎn)程服務(wù)器粒蜈,有服務(wù)器進(jìn)行查詢(xún)和計(jì)算顺献,得出這個(gè)位置下當(dāng)前衛(wèi)星信息,反饋給iOS設(shè)備枯怖,iOS設(shè)備就可以直接用這些信息來(lái)接受衛(wèi)星信號(hào)注整,不用自己去掃描分析了。這樣可以極大提高定位速度度硝,將初次定位時(shí)間縮短到1~2秒完成肿轨。
A-GPS優(yōu)點(diǎn)是定位快,缺點(diǎn)是需要網(wǎng)絡(luò)蕊程,但也只是在初次定位時(shí)需要網(wǎng)絡(luò)椒袍,因?yàn)橐坏┬l(wèi)星信息返回,在有限時(shí)間和范圍內(nèi)藻茂,這些信息無(wú)須改變驹暑,之后的GPS定位就不再需要聯(lián)網(wǎng)玫恳,都是直接用這些衛(wèi)星參數(shù)接受信息了。
在iOS設(shè)備上优俘,上述定位方式會(huì)綜合應(yīng)用纽窟,一般地,可能先按照最快的“無(wú)網(wǎng)基站定位”返回一個(gè)位置兼吓,當(dāng)有網(wǎng)絡(luò)連接時(shí)臂港,在用有網(wǎng)基站定位更新位置,然后视搏,利用AGPS上網(wǎng)查詢(xún)衛(wèi)星星圖审孽,最后,在能收到GPS信號(hào)的情況下浑娜,轉(zhuǎn)為使用GPS定位佑力。
根據(jù)當(dāng)前信號(hào)情況和網(wǎng)絡(luò)環(huán)境,iOS可能在上述方式之間反復(fù)迭代筋遭,不一定一致特定步驟或者方式打颤,而且隨著iOS升級(jí),定位順序和規(guī)則可能改變漓滔。
GPX FILES
GPX(GPS eXchange Format编饺,GPS交換格式)是一個(gè)XML格式,為應(yīng)用軟件設(shè)計(jì)的通用GPS數(shù)據(jù)格式响驴。它可以用來(lái)描述路點(diǎn)透且、軌跡、路程豁鲤。它用來(lái)保存位置秽誊,海拔和時(shí)間。
Xcode也是用GPX 文件來(lái)存儲(chǔ)位置信息.所以琳骡,我們還可以自定義一個(gè)GPX文件锅论,模擬任意的位置信息。
https://blackpixel.com/writing/2013/05/simulating-locations-with-xcode.html
https://github.com/whilethis/location-simulation
大多數(shù)App取定位信息的時(shí)候,都是調(diào)用用系統(tǒng)的Core Location API ,CLLocationManager.
然而在此所有app調(diào)用定位服務(wù)后楣号,獲取到的都是我在FakeGPS工程中選的Default Location的定位信息最易。Why ? 有人說(shuō)是bughttp://stackoverflow.com/questions/14285453/xcode-default-simulated-location
各種聯(lián)想中...