1.定位的基本使用:
1>iOS7只要开始定位, 系统就会自动要求用户对你的应用程序授权. 但是从iOS8开始, 想要定位必须先”自己”“主动”要求用户授权
在iOS8中调用requestAlwaysAuthorization和requestWhenInUseAuthorization要主动请求授权, 而且 必须再info.plist文件中配置一项属性才能弹出授权窗口
NSLocationWhenInUseDescription,允许在前台获取GPS的描述(弹框时的描述就是key后面的文字,下同)
NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述
if([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0){
// 主动要求用户对我们的程序授权, 授权状态改变就会通知代理
[self.mgr requestAlwaysAuthorization]; // 请求前台和后台定位权限
//[self.mgr requestWhenInUseAuthorization];// 请求前台定位权限
}else{
// 3.开始监听(开始获取位置)
[self.mgr startUpdatingLocation];
}
并且监听:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse){
NSLog(@"授权成功");
// 开始定位
[self.mgr startUpdatingLocation];
}
}
在有授权的时候才开始进行定位。所以要根据系统版本的不同进行判定,iOS8之前可以直接进行定位,在iOS8以后要按照上述步骤进行
设置定位精度和多远进行一次定位:
self.mgr.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
self.mgr.distanceFilter = 500;
iOS7授权框弹出时的描述可以配置:
Privacy - Location Usage Description,后面加描述