我是用的高德地图做的定位
现在大部分手机都是iOS 11 系统以后的,所以不考虑iOS 11以前的系统.
iOS 11 以后
NSLocationAlwaysAndWhenInUseUsageDescription 表示始终允许
NSLocationWhenInUseUsageDescription 表示使用期
但是使用NSLocationAlwaysAndWhenInUseUsageDescription之后系统的定位授权弹框,并不会出现.
高德地图对此作出了处理.
/**
* @brief 当plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription,并且[CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined,会调用代理的此方法。
此方法实现调用申请后台权限API即可:[locationManager requestAlwaysAuthorization](必须调用,不然无法正常获取定位权限)
* @param manager 定位 AMapLocationManager 类。
* @param locationManager 需要申请后台定位权限的locationManager。
* @since 2.6.2
*/
- (void)amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager;
所以只需要在代码中加入如下代码,就可以正常弹框了
- (void)amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager
{
[locationManager requestAlwaysAuthorization];
}
当然,此方法在AMapLocationManagerDelegate当中,需要设置delegate