Search code examples
iosios8xcode6cllocationmanagercllocation

CLLocation won't start updating location


I am having a lot of trouble after updating to iOS 8. The following code worked before I updated to iOS and Xcode 6. Code is written inside viewDidLoad:

self.locationManager.delegate = self;
[self.locationManager requestWhenInUseAuthorization];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self.locationManager startUpdatingLocation];

In my .h file, I have locationManager as a property, also declaring CLLocationManagerDelegate:

@property CLLocationManager *locationManager;

I've set a breakpoint inside

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

but the code never ran.

What step am I missing???

EDIT: do note that the prompt asking the user to allow location services never appeared. I suspect that this is the issue but I did request the service right after I declared the delegate to self.

Also added

<key>NSLocationWhenInUseUsageDescription</key>
<string>Your message goes here</string>

But still does not work for me


Solution

  • So after all the "iOS 8" issues, I realized my problem was that I didn't allocate and init my locationManager

    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    [self.locationManager requestWhenInUseAuthorization];
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    
        if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways) {
            [self.locationManager startUpdatingLocation];
        }else{
            [self.locationManager requestWhenInUseAuthorization];
            [self.locationManager requestAlwaysAuthorization];
        }
    [self.locationManager startUpdatingLocation];