Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

didUpdateLocations not called

I'm trying to get my current location, but the break point in didUpdateLocations is never being called.

LocationManager:

locationManager = [[CLLocationManager alloc] init]; [locationManager setDelegate:self]; [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; [locationManager setDesiredAccuracy:kCLDistanceFilterNone]; [locationManager startUpdatingLocation]; 

Delegate method:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; 

I confirmed that location services and enabled and authorized.

Why is the locationManager delegate method not being called like it should?

like image 282
mikeholp Avatar asked Oct 27 '13 23:10

mikeholp


Video Answer


1 Answers

Furthermore in iOS8 you must have two extra things:

  • Add a key to your Info.plist and request authorization from the location manager asking it to start.

    • NSLocationWhenInUseUsageDescription

    • NSLocationAlwaysUsageDescription

  • You need to request authorization for the corresponding location method.

    • [self.locationManager requestWhenInUseAuthorization]

    • [self.locationManager requestAlwaysAuthorization]

Code example:

self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7. if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {     [self.locationManager requestWhenInUseAuthorization]; } [self.locationManager startUpdatingLocation]; 

Source: http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/

like image 123
MarMass Avatar answered Sep 23 '22 06:09

MarMass