今天來聊聊未越獄iPhone虛擬定位的方法屁置。首先給讀者朋友們提個醒焊夸,App Store那些收費(fèi)(或者App內(nèi)購)的宣稱能夠模擬定位的App仁连,100%都騙人的蓝角。
因為iOS相對封閉,對定位權(quán)限控制很嚴(yán)格饭冬,未越獄的情況下App也沒有任何接口可以修改系統(tǒng)定位使鹅。不過哪里有壓迫,哪里就有反抗昌抠。需求決定應(yīng)用患朱,有需求就有市場,辦法還是有的炊苫。
需求是什么呢裁厅?為什么要虛擬定位呢?除了上圖說的幾種原因之外侨艾,當(dāng)然最重要的就是在休閑會所休息時能把定位修改到公司执虹。
那在未越獄的iPhone進(jìn)行虛擬定位,有哪些方法呢唠梨? 小司機(jī)今天主要分享兩種方法袋励。
(一)利用Xcode聯(lián)機(jī)調(diào)試來虛擬定位
這個方法iOS開發(fā)的同學(xué)應(yīng)該都知道吧,如果不知道的就要打pp了当叭。我之前文章中也提到過茬故,這里偷個懶,直接復(fù)制過來了蚁鳖。
(1)選好目的地? ??比如打開百度地圖PC版磺芭,搜索馬拉卡納球場,找到對應(yīng)的經(jīng)緯度坐標(biāo)醉箕,記錄下來徘跪。
(2)打開Xcode,模擬定位
把iPhone連上電腦琅攘,打開Xcode隨便在手機(jī)上運(yùn)行一個程序垮庐,然后把第一步查到的坐標(biāo),放在一個gpx文件中坞琴,進(jìn)行模擬哨查,整個iOS系統(tǒng)的定位就已經(jīng)修改。
(二)借助蘋果MFi外設(shè)剧辐,硬件輔助模擬定位
剛剛說的用Xcode模擬定位寒亥,有一個致命的缺點就是需要連著Mac不夠方便邮府,總不能去休閑會所還背個民工包帶著個蘋果電腦吧。所以溉奕,這里重點介紹第二種方法褂傀,借助MFi硬件輔助進(jìn)行虛擬定位,先看個小視頻加勤。
這樣一個小玩意仙辟,還挺方便的,插上也不影響耳機(jī)使用和充電鳄梅,配合一個App叠国,可以隨意搜索POI或者地圖上點選進(jìn)行模擬定位。
它的原理是怎樣的呢戴尸?它主要是利用了蘋果的通用外設(shè)協(xié)議粟焊,集成MFi芯片,注冊成為外置的GPS設(shè)備孙蒙,然后更新系統(tǒng)位置项棠,能夠?qū)Πㄎ⑿旁趦?nèi)的所有應(yīng)用生效。更具體一點說挎峦,硬件需要集成蘋果的MFi芯片香追,然后利用了iAP2中的兩種協(xié)議:External Accessory Protocol和Location Information,大概原理如下:
(1)模擬定位的App 使用 EA協(xié)議跟外設(shè)連接浑测。這個App集成了地圖SDK翅阵,主要用途就是方便用戶進(jìn)行搜索或者地圖點選來獲取想要虛擬定位的GPS信息,然后通過EA通道使用自定義的數(shù)據(jù)協(xié)議把用戶選好的GPS信息發(fā)送給硬件迁央。
(2)硬件從EA通道接收到GPS信息之后掷匠,根據(jù)iAP2中的Location Information協(xié)議把GPS信息進(jìn)行編碼,發(fā)送給iOS系統(tǒng)岖圈。
(3)iOS系統(tǒng)接收到硬件通過Location Information協(xié)議過來的GPS信息之后讹语,就會把整個系統(tǒng)底層的定位信息更新,這樣包括微信在內(nèi)的所有應(yīng)用的定位都修改成了剛剛選擇的模擬定位點了蜂科。
蘋果為什么要開放這樣一個可以修改系統(tǒng)定位的外設(shè)協(xié)議呢顽决??
從這段蘋果官方文檔的描述可以看到,主要目的是為了提高定位精度导匣,提升某些場合的用戶體驗才菠。比如汽車的GPS模塊定位精度要比iPhone高,如果能夠把汽車的GPS信息發(fā)給iPhone贡定,那iPhone上的導(dǎo)航體驗就會好很多赋访。
當(dāng)然上面這種通過MFi芯片進(jìn)行模擬定位的硬件,肯定是過不了蘋果的MFi認(rèn)證的。只能夠去黑市購買MFi芯片蚓耽,然后開發(fā)走線下渠道銷售渠牲,App也上不了App Store,只能通過企業(yè)證書分發(fā)步悠。
網(wǎng)上還有一些其他的方法签杈,比如通過各種手機(jī)助手(比如PP助手)來修改定位等,我自己沒有用過鼎兽,這里就不做介紹了答姥,大家可以搜索了解一下。
相關(guān)文章:
另外接奈,本人維護(hù)了一個“MFi開發(fā)交流”的微信群踢涌,里面有iOS開發(fā) 通孽、外設(shè)驅(qū)動開發(fā)序宦、MFi認(rèn)證機(jī)構(gòu)等各類相關(guān)人員,大家相互交流互幫互助背苦。感興趣的同學(xué)可以關(guān)注微信公眾號私信我進(jìn)群互捌,入群備注:MFi。