地理定位(iOS 8.0)
来源:互联网 发布:linux命令行 删除 编辑:程序博客网 时间:2024/06/03 13:20
从iOS8.0开始,苹果进一步加强了对用户隐私的保护。
当APP想访问用户的隐私信息时,系统不再自动弹出一个对话框让用户授权
解决方案:
(1)调用iOS8.0的API,主动请求用户授权
- (void)requestAlwaysAuthorization //请求允许在前后台都能获取用户位置的授权
- (void)requestWhenInUseAuthorization// 请求允许在前台获取用户位置的授权
(2)务必在info.plist文件中配置对应的键值,否则以上请求授权的方法不生效
NSLocationAlwaysUsageDescription :允许在前后台获取GPS的描述
NSLocationWhenInUseDescription :允许在前台获取GPS的描述
//// ViewController.m#import "ViewController.h"#import <CoreLocation/CoreLocation.h>@interface ViewController ()<CLLocationManagerDelegate>/** 位置管理者 */@property (nonatomic, strong) CLLocationManager *lM;@end@implementation ViewController#pragma mark - 懒加载- (CLLocationManager *)lM{ if (!_lM) { // 1. 创建位置管理者 _lM = [[CLLocationManager alloc] init]; // 1.1 代理, 通知, block _lM.delegate = self; // 每隔多米定位一次// _lM.distanceFilter = 100; /** kCLLocationAccuracyBestForNavigation // 最适合导航 kCLLocationAccuracyBest; // 最好的 kCLLocationAccuracyNearestTenMeters; // 10m kCLLocationAccuracyHundredMeters; // 100m kCLLocationAccuracyKilometer; // 1000m kCLLocationAccuracyThreeKilometers; // 3000m */ // 精确度越高, 越耗电, 定位时间越长 _lM.desiredAccuracy = kCLLocationAccuracyBest; /** -------iOS8.0+定位适配-------- */ if([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { // 前台定位授权(默认情况下,不可以在后台获取位置, 勾选后台模式 location update, 但是 会出现蓝条)// [_lM requestWhenInUseAuthorization]; // 前后台定位授权(请求永久授权) // +authorizationStatus != kCLAuthorizationStatusNotDetermined // 这个方法不会有效 // 当前的授权状态为前台授权时,此方法也会有效 [_lM requestAlwaysAuthorization]; } // if ([_lM respondsToSelector:@selector(requestAlwaysAuthorization)])// {// [_lM requestAlwaysAuthorization];// } } return _lM;}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 2. 使用位置管理者,开始更新用户位置 // 默认只能在前台获取用户位置, // 勾选后台模式 location updates [self.lM startUpdatingLocation]; }#pragma mark - CLLocationManagerDelegate/** * 更新到位置之后调用 * * @param manager 位置管理者 * @param locations 位置数组 */-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ NSLog(@"定位到了"); // 拿到位置,做一些业务逻辑操作 // 停止更新// [manager stopUpdatingLocation]; }/** * 授权状态发生改变时调用 * * @param manager 位置管理者 * @param status 状态 */-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{ switch (status) { // 用户还未决定 case kCLAuthorizationStatusNotDetermined: { NSLog(@"用户还未决定"); break; } // 问受限 case kCLAuthorizationStatusRestricted: { NSLog(@"访问受限"); break; } // 定位关闭时和对此APP授权为never时调用 case kCLAuthorizationStatusDenied: { // 定位是否可用(是否支持定位或者定位是否开启) if([CLLocationManager locationServicesEnabled]) { NSLog(@"定位开启,但被拒"); }else { NSLog(@"定位关闭,不可用"); }// NSLog(@"被拒"); break; } // 获取前后台定位授权 case kCLAuthorizationStatusAuthorizedAlways: // case kCLAuthorizationStatusAuthorized: // 失效,不建议使用 { NSLog(@"获取前后台定位授权"); break; } // 获得前台定位授权 case kCLAuthorizationStatusAuthorizedWhenInUse: { NSLog(@"获得前台定位授权"); break; } default: break; } }@end
0 0
- 地理定位(iOS 8.0)
- iOS地理定位
- iOS地理定位
- 地理定位 (iOS 9.0)
- iOS开发 - CoreLocation地理定位
- 地理定位(iOS7)
- iOS - 百度地图SDK集成(地理定位)
- iOS百度地图简单应用( iOS地图定位(定位、地理编码与反地理编码、mapView、大头针)
- ios有关定位 ,地理编码,反地理编码;
- iOS 硬件 定位 - 地理编码和反地理编码
- iOS开发-定位服务和地理围栏
- iOS定位和地理坐标类型解释
- 芒果iOS开发之定位、地理编码
- iOS开发地图定位及地理编码
- iOS反地理编码,lbs定位
- ios百度地图定位反地理编码
- iOS 定位于地理反编码
- HTML5 Geolocation(地理定位)
- The user specified as a definer ('test'@'%') does not exist
- 图像处理的坐标变换必备的矩阵知识
- Dism 错误 0x800f0806
- 排序
- 安卓handler学习
- 地理定位(iOS 8.0)
- CodeForces 665E Beautiful Subarrays(Trie)
- Kinect开发笔记之二——语音识别
- iOS网络——NSURLCache设置网络请求缓存,NSUrlCache
- YTU 3013: 皇后问题(递归)
- [bzoj4517][SDOI2016]排列计数
- dubbo原理解析
- 解题报告:HDU4704Sum 费马小定理+快速幂
- 如何在eclipse中设置javadoc