繁体   English   中英

在iOS 8中获取CoreLocation

[英]Obtaining CoreLocation in iOS 8

我正在尝试通过我的应用获取当前用户位置。 我编写了所有委托方法,在info.plist中添加了字符串,但仍然没有调用委托方法。 请帮我。

 - (void)viewDidLoad {
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    self.locationManager = [[CLLocationManager alloc] init];

    self.locationManager.delegate = self;
    if(IS_OS_8_OR_LATER){
        NSUInteger code = [CLLocationManager authorizationStatus];
        if (code == kCLAuthorizationStatusNotDetermined &&([self.locationManager  respondsToSelector:@selector(requestAlwaysAuthorization)] || [self.locationManager   respondsToSelector:@selector(requestWhenInUseAuthorization)])) {
            // choose one request according to your business.
            if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){
                [self.locationManager requestAlwaysAuthorization];
            } else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) {
                [self.locationManager  requestWhenInUseAuthorization];
            } else {
                NSLog(@"Info.plist does not contain NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription");
            }
        }
    }
    [self.locationManager startUpdatingLocation];

}

#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"didFailWithError: %@", error);
    UIAlertView *errorAlert = [[UIAlertView alloc]
                               initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [errorAlert show];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;

    if (currentLocation != nil) {
        longitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
        latitude = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
    }
}

我的应用程序info.plist中添加的键的屏幕截图查找密钥时出错

控制台本身会记录您缺少info.plist文件中添加适当的键的功能

NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription

带有相关描述的密钥,然后向用户发出允许访问的请求。

链接可能会有所帮助。

由于您已经添加了这些键,请尝试以下操作

  1. 取出按键并重新添加。
  2. 完成后,尝试进行清理,然后构建您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM