首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 9延迟位置更新不起作用

iOS 9延迟位置更新不起作用
EN

Stack Overflow用户
提问于 2015-09-15 11:42:17
回答 1查看 1.3K关注 0票数 5

嗨,最近与iOS 9转基因种子版本出来,我看到位置iOS没有被推迟。我得到了错误的kCLErrorDeferredFailed -位置管理器没有进入延迟模式,原因不明。

因为这个错误,它根本没有进入延迟模式,并且位置更新一直在触发。在iOS 8.4及以下的versions.Its中,同样的代码会使我的设备的电池消耗掉很大比例。对于iOS 9,我们是否需要显式地设置或提及什么?

代码语言:javascript
复制
  -(void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations {

  if (!self.deferringUpdates) {

  [self.locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocationDistanceMax timeout:30];
   self.deferringUpdates = YES;
 } 
}

-(void)locationManager:(CLLocationManager *)manager
didFinishDeferredUpdatesWithError:(NSError *)error {
  // Stop deferring updates
  self.deferringUpdates = NO;

 }

我还设置了allowsBackgroundLocationUpdates属性,但即使这样也没有帮助。

代码语言:javascript
复制
      self.locationManager.allowsBackgroundLocationUpdates=YES;

在iOS 9及更高版本中,无论部署目标如何,您还必须将位置管理器对象的allowsBackgroundLocationUpdatesproperty设置为YES,以便接收后台位置更新。默认情况下,此属性为NO,并且应该保持这种状态,直到应用程序主动要求后台位置更新时为止。

降低定位精度和持续时间

请告诉我我还需要做些什么

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-08-29 05:48:35

请阅读API参考页上的讨论

正如提到的这里,有几件事需要尝试

  • 从多任务处理栏中删除所有应用程序
  • 验证没有其他应用程序使用位置服务。
  • 从调试器和MacBook中拔出设备(通过将didUpdateLocations记录到文件来验证它是否仍在被调用)
  • 确保设备支持延迟更新。
  • 确保distanceFilter为None,desiredAccuracy为最佳
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32585166

复制
相关文章

相似问题

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