kCLLocationAccuracyBestForNavigation在后台无法正常工作

时间:2014-01-03 14:22:41

标签: ios objective-c background core-location cllocationmanager

  1. 将“location”添加到项目的plist文件中。
  2. 分配并初始化位置管理器。

    self.locationManager = [[[CLLocationManager alloc] init] autorelease];

    [self.locationManager setDelegate:self];

    [self.locationManager setDistanceFilter:kCLDistanceFilterNone];

    [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];

    [self.locationManager setPausesLocationUpdatesAutomatically:NO];

    [self.locationManager startUpdatingLocation];

  3. 实施委托功能。

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

  4. 它在前景中非常完美。我想让它在后台频繁调用,就像前景一样。但事实并非如此。

    请帮助我,我应该添加更多内容。

2 个答案:

答案 0 :(得分:1)

首先,您最好阅读文档 here. 其次,使用iOS7,用户可以在iPhone的“设置”菜单中禁用位置更新。因此,您应该在AppDelegate方法backgroundRefreshStatus中检查UIApplication类中可用的applicationDidBecomeActive属性。如果用户拒绝了权限,则此值将设置为UIBackgroundRefreshStatusDenie。因此,您应该要求用户通过警报提供权限。

答案 1 :(得分:1)

你说,“添加”位置“到项目的plist文件中。”

您是说您在-info.plist的“所需背景模式”中添加了“应用寄存器以进行位置更新”吗?

您是手动执行此操作,还是为目标选择“功能”的“背景模式”部分下的“位置更新”?