首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一段时间后未调用CLLocationManager didUpdateToLocation

一段时间后未调用CLLocationManager didUpdateToLocation
EN

Stack Overflow用户
提问于 2013-01-24 22:02:52
回答 4查看 5.2K关注 0票数 4

我正在尝试记录一段时间内用户的位置。如果用户在移动,它工作正常,委托方法didUpdateToLocation被调用reliably.However如果用户是静止的,应用程序在后台运行,一段时间后,委托方法不再被调用。要重新启动它,需要将应用程序买到前台。一旦它被激活,委托方法就会被再次可靠地调用。

我最初认为这可能是因为CLLocationManager对象是在ViewController中声明的,所以我将其更改为在AppDelegate中声明,但这也没有帮助。

我也尝试过distanceFilter属性,但没有用。我目前正在使用下面的代码在View控制器中设置它。请注意,对象本身是在AppDelegate对象中声明和初始化的。

代码语言:javascript
运行
复制
 app.locationManager.delegate = self;
    app.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    app.locationManager.distanceFilter = kCLDistanceFilterNone;
    [app.locationManager startUpdatingLocation];

有没有其他人遇到过这个问题?如有任何建议,我们将不胜感激。我已经为此挣扎了几天了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-25 17:24:45

iOS 6引入了CLLocationManager属性pausesLocationUpdatesAutomatically。

票数 5
EN

Stack Overflow用户

发布于 2013-06-18 16:46:24

将此代码添加到UpdateLocation方法中

代码语言:javascript
运行
复制
- (void) updateLocation{
    self.locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.pausesLocationUpdatesAutomatically = NO;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    if ([CLLocationManager locationServicesEnabled]) {
        [locationManager startUpdatingLocation];       
    } else {
        NSLog(@"Location services is not enabled");
    }
}

还可以在方案中编辑设置:方案/编辑方案/选项/允许位置模拟选中,但没有默认位置设置。

票数 5
EN

Stack Overflow用户

发布于 2013-01-24 22:05:16

您需要在应用程序plist文件中的UIBackgroundModes中添加位置。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14503161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档