首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS9在后台不跟踪位置

iOS9在后台不跟踪位置
EN

Stack Overflow用户
提问于 2015-09-24 09:39:48
回答 4查看 14.9K关注 0票数 22

我的应用程序在后台跟踪位置。启用了位置后台模式,并且我使用

代码语言:javascript
复制
[self.locationManager startUpdatingLocation];

这在iOS7-8上很好,但是它停止了对iOS9的工作。

在模拟器里它能工作,但是在真实的设备上,我在后台没有回调.当在iOS8设备上运行相同的代码时,我会像以前一样得到正常的回调

,这是有记录的吗?为什么它在模拟器中工作而不是在设备上工作?是错误吗?

当使用startSignificantChangeUpdates时,它在iOS9上工作,我想知道这是否是某种节省电池的功能,他们可能禁止startUpdatingLocation。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-09 22:07:23

使用:

代码语言:javascript
复制
if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
    [self.locationManager setAllowsBackgroundLocationUpdates:YES];
}

若要避免使用评估系统版本的宏,请执行以下操作。这将调用setAllowsBackgroundLocationUpdates:在iOS 9上,而不是在iOS 8上。

票数 34
EN

Stack Overflow用户

发布于 2015-09-24 09:52:01

请使用以下参考资料,以了解ios 9中的位置

allowsBackgroundLocationUpdates in CLLocationManager in iOS9

这个新属性将在WWDC会话“核心位置中的新内容”中解释。

如果链接到iOS 9,则默认值为NO。

如果应用程序在后台使用位置(没有显示蓝色状态栏),那么除了在allowsBackgroundLocationUpdates中设置背景模式功能之外,还必须将Info.plist设置为YES。否则,位置更新仅在前台传递。其优点是,您现在可以使用后台位置更新的位置管理器,以及在同一应用程序中只有前台位置更新的其他位置管理器。还可以将值重置为“否”以更改行为。

文档对此相当清楚:

默认情况下,对于链接到iOS 9.0或更高版本的应用程序,不管最低部署目标是什么,这都不是。

将UIBackgroundModes设置为在Info.plist中包含"location“,您还必须在运行时将此属性设置为YES,以便在后台继续调用-startUpdatingLocation。

当UIBackgroundModes不包括"location“时,将此属性设置为YES是一个致命错误。

将此属性重置为NO等同于从UIBackgroundModes值中省略“位置”。在应用程序运行(即不挂起)并具有足够的授权(即具有WhenInUse授权和正在使用中,或者始终具有授权)时,仍然允许访问位置。然而,该应用程序仍将受制于通常的任务暂停规则。

有关可能的授权值的详细信息,请参阅-requestWhenInUseAuthorization和-requestAlwaysAuthorization。

谢谢

票数 15
EN

Stack Overflow用户

发布于 2015-10-12 17:59:29

我也有同样的问题,你需要添加这样的东西:

代码语言:javascript
复制
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")){

    [self.locationManager setAllowsBackgroundLocationUpdates:YES];

}

我用于检查系统版本的宏如下所示:

代码语言:javascript
复制
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

以下论坛帖子帮助了我:

https://forums.developer.apple.com/thread/6895

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

https://stackoverflow.com/questions/32758125

复制
相关文章

相似问题

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