【问题标题】:Tracking User Location in the Background in iOS 7在 iOS 7 中在后台跟踪用户位置
【发布时间】:2013-11-23 03:38:04
【问题描述】:

当应用程序移至后台时,我正在尝试跟踪用户的位置。我只需要跟踪一次。所以,我没有使用后台定位服务。在下面的代码中,这在我取消注释 1 时有效,但在我取消注释 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];

});

}

在第二种情况下,不调用此委托函数。

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

}

谁能告诉我为什么这在第二种情况下不起作用。另外,在第一个位置使用[self startStandardUpdates]可以吗?

【问题讨论】:

  • 您能发布startStandardUpdates 方法的作用吗?
  • @initWithQuestion 对不起,我很久以前就问过这个问题了。我无权访问代码...感谢您的关注

标签: ios location cllocationmanager background-process


【解决方案1】:

试试这个

默认情况下,对于链接到 iOS 6.0 或更高版本的应用程序,这是 YES。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 2017-11-24
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2014-11-18
    相关资源
    最近更新 更多