aMother
aMother

Reputation: 893

Tracking User Location in the Background in iOS 7

I am trying to track's user location when the application moves to background. I just need to track once. So, I am not using background location services. In the code below this works when I uncomment 1 but it doesn't work when I uncomment 2.

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // 1 works here [self startStandardUpdates];

    self.bgTask = [application beginBackgroundTaskWithExpirationHandler:^{

    [application endBackgroundTask:self.bgTask];
    self.bgTask = UIBackgroundTaskInvalid;
}];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{

    // 2 doesn't work here [self startStandardUpdates];

});

}

In second case this delegate function is not called.

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    NSLog(@"Updated\n%@",locations);
    [self.manager stopUpdatingLocation];
    [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
    self.bgTask = UIBackgroundTaskInvalid;

}

Can someone tell me why this is not working in 2nd case. Also, is it fine using [self startStandardUpdates] in the first position ?

Upvotes: 0

Views: 534

Answers (1)

Bhumeshwer katre
Bhumeshwer katre

Reputation: 4671

Try this

By default, this is YES for applications linked against iOS 6.0 or later.

if ([self.manager  respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) {
    self.manager.pausesLocationUpdatesAutomatically = NO;
}

Upvotes: 0

Related Questions