iOS系统自带CoreLocation不能定位原因

当然,系统自带的定位类不能定位的原因有很多,今天我就遇到一个很奇葩的,是自己没有考虑到位。

首先是为了方便,建了一个工具类,专门用于定位的,但始终就是不走代理,奇了怪了。。。

接下来排除原因:

1、iOS8.0以后要在info.plist添加

Privacy - Location When In Use Usage Description

Privacy - Location Always Usage Description

2、如果要求后台定位,则要在targets->capabilities下打开background modes,并勾选Location updates;

3、设工具类中<code>CLLocationManager</code>的实例代理为工具类,实现CLLocationManagerDelegate
方法;

4、_locationManager执行requestAlwaysAuthorization或requestWhenInUseAuthorization

方法,向系统提出权限要求;

5、iOS9.0以后要在后台定位的,要设

allowsBackgroundLocationUpdates = YES;

6、最后确定开启定位,startUpdatingLocation
,iOS9.0以后可以选择换做requestLocation。

那么好了,以上都没问题,就是不执行代理方法是怎么回事?

有人说不能在初始化的时候就设置代理,这个好像有道理,但说不过去;

有人说要类单例,一开始觉得没什么道理啊,不过死马当活马医,就试试看,果真了,给我打印出定位坐标了😱。

推测原因是,定位的代理是后台执行的,工具类很有可能超时挂掉了。。。

好了,下次记得单例的好处啦。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容