iOS经典讲解之地图定位请求位置信息时出现的问题

来源:互联网 发布:mac 获取当前文件路径 编辑:程序博客网 时间:2024/06/05 00:40

地图定位请求位置信息在iOS8之后新增两个方法:

- (void)requestWhenInUseAuthorization

- (void)requestAlwaysAuthorization,

但是在使用这两个方法的时候需要手动在Info.plist文件加两个字段,

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

这两个字段没什么特别的意思,就是自定义提示用户授权使用地理定位功能时的提示语。

系统给出了说明:

/* If the NSLocationWhenInUseUsageDescription key is not specified in your *      Info.plist, this method will do nothing, as your app will be assumed not *      to support WhenInUse authorization. */- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);/*      If the NSLocationAlwaysUsageDescription key is not specified in your *      Info.plist, this method will do nothing, as your app will be assumed not *      to support Always authorization. */- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);

示例图片如下:

这样添加代码就可以了:

#import "ViewController.h"#import <CoreLocation/CoreLocation.h>@interface ViewController () <CLLocationManagerDelegate>@property (nonatomic, strong) CLLocationManager *locationManager;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        // 初始化    self.locationManager = [[CLLocationManager alloc] init];    // 设置代理    self.locationManager.delegate = self;    // 定位精度    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;    // 设置多少米更新一次距离    self.locationManager.distanceFilter = 100;    // 什么时候请求位置信息 注意:  If the NSLocationAlwaysUsageDescription key is not specified in your Info.plist, this method will do nothing, as your app will be assumed not to support Always authorization. 需要设置plist文件添加NSLocationAlwaysUsageDescription为key即可        [self.locationManager requestAlwaysAuthorization];    // 开始请求位置信息    [self.locationManager startUpdatingLocation];    }#pragma mark -- 代理方法//定位成功时代理方法-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{    CLLocation *location = [locations firstObject];  NSLog(@"%@", location);   }// 定位失败- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{    // 错误信息描述    NSLog(@"%@", [error localizedDescription]);}@end

接下来就可以获取位置信息了,出现如下提示,说明请求成功了:


0 0