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、设工具类中CLLocationManager的实例代理为工具类,实现CLLocationManagerDelegate
方法;

4、_locationManager执行requestAlwaysAuthorization或requestWhenInUseAuthorization

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

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

allowsBackgroundLocationUpdates = YES;

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

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

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

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

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

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

你可能感兴趣的:(iOS系统自带CoreLocation不能定位原因)