由于iOS相对封闭,对定位权限掌握很严格,未越狱的情形下App也没有任何接口可以修正系统定位。不过哪里有压迫,哪里就有反抗。需求决定运用,有需求就有市场,办法还是有的。
需求是什么呢?为什么要虚拟定位呢?除了上图说的几种缘故原由之外,当然最主要的便是在休闲会所安歇时能把定位修正到公司。
那在未越狱的iPhone进行虚拟定位,有哪些方法呢? 小司机今天主要分享两种方法。

(一)利用Xcode联机调试来虚拟定位
这个方法iOS开拓的同学该当都知道吧,如果不知道的就要打pp了。我之前文章中也提到过,这里偷个
(1)选好目的地 比如打开百度舆图PC版,搜索马拉卡纳球场,找到对应的经纬度坐标,记录下来。
(2)打开Xcode,仿照定位
把iPhone连上电脑,打开Xcode随便在手机上运行一个程序,然后把第一步查到的坐标,放在一个gpx文件中,进行仿照,全体iOS系统的定位就已经修正。
(二)借助苹果MFi外设,硬件赞助仿照定位
刚刚说的用Xcode仿照定位,有一个致命的缺陷便是须要连着Mac不足方便,总不能去休闲会所还背个民工包带着个苹果电脑吧。以是,这里重点先容第二种方法,借助MFi硬件赞助进行虚拟定位,先看个小视频。
Play Video
这样一个小玩意,还挺方便的,插上也不影响耳机利用和充电,合营一个App,可以随意搜索POI或者舆图上点选进行仿照定位。
它的事理是若何的呢?它紧张是利用了苹果的通用外设协议,集成MFi芯片,注册成为外置的GPS设备,然后更新系统位置,能够对包括微信在内的所有运用生效。更详细一点说,硬件须要集成苹果的MFi芯片,然后利用了iAP2中的两种协议:External Accessory Protocol和Location Information,大概事理如下:
(1)仿照定位的App 利用 EA协议跟外设连接。这个App集成了舆图SDK,紧张用场便是方便用户进行搜索或者舆图点选来获取想要虚拟定位的GPS信息,然后通过EA通道利用自定义的数据协议把用户选好的GPS信息发送给硬件。
(2)硬件从EA通道吸收到GPS信息之后,根据iAP2中的Location Information协议把GPS信息进行编码,发送给iOS系统。
(3)iOS系统吸收到硬件通过Location Information协议过来的GPS信息之后,就会把全体系统底层的定位信息更新,这样包括微信在内的所有运用的定位都修正成了刚刚选择的仿照定位点了。
苹果为什么要开放这样一个可以修正系统定位的外设协议呢?
从这段苹果官方文档的描述可以看到,紧张目的是为了提高定位精度,提升某些场合的用户体验。比如汽车的GPS模块定位精度要比iPhone高,如果能够把汽车的GPS信息发给iPhone,那iPhone上的导航体验就会好很多。
当然上面这种通过MFi芯片进行仿照定位的硬件,肯定是过不了苹果的MFi认证的。只能够去黑市购买MFi芯片,然后开拓走线下渠道发卖,App也上不了App Store,只能通过企业证书分发。
网上还有一些其他的方法,比如通过各种手机助手(比如PP助手)来修正定位等,我自己没有用过,这里就不做先容了,大家可以搜索理解一下。
其余,本人掩护了一个“MFi开拓互换”的V_信群,里面有iOS开拓 、外设驱动开拓、MFi认证机构等各种干系职员,大家相互互换互帮互助。感兴趣的同学可以关注V_信"大众号(云峰小罗)私信我进群,入群备注:MFi。