ios12后台定位服务停止

Posted

技术标签:

【中文标题】ios12后台定位服务停止【英文标题】:ios12 background location service stopping 【发布时间】:2019-03-03 04:26:56 【问题描述】:

我有一个应用程序可以在后台持续跟踪设备位置。 这在 ios 11.4 中运行良好,我可以让应用程序在后台运行数天,同时仍在前台执行其他操作。

现在在 ios 12 中,当设备闲置一段时间后,该应用确实会停止运行。

LocationManager 初始化如下:

locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
locationManager.startUpdatingHeading()
locationManager.allowsBackgroundLocationUpdates = false
locationManager.pausesLocationUpdatesAutomatically = false
if #available(iOS 11.0, *)

    locationManager.showsBackgroundLocationIndicator = true
 
locationManager.distanceFilter = prefs.getDoubleFromString(Prefs.PREF_DISTANCE_FILTER, defaultVal: 2.5)

当用户决定开始跟踪时

locationManager.allowsBackgroundLocationUpdates = true

已设置。

该应用为定位服务设置了“始终”权限。

知道 ios 12 发生了什么变化吗?

【问题讨论】:

您已将后台更新设置为false 是的,最初。但正如我指出的那样,用户在某个时候决定激活完整的跟踪功能,然后将此参数设置为 true 您说过应用程序为位置服务设置了“始终”权限,但您的代码仅触发requestWhenInUseAuthorization。你确定用户已经允许always 权限。 您需要出示所有相关代码,我们才能为您提供帮助。 是的,在应用设置中设置了“始终”。 @Paulw11:我已经在我的代码 sn-p 中表明该参数是稍后设置的。不确定还有哪些其他部分是相关的。请记住,这是在 ios 11.4.x 下运行良好的代码。 【参考方案1】:

这似乎是自 iOS 12 以来的一个错误,即应用程序将无缘无故地在后台终止。我已经填写了错误报告。

有关更多信息和演示项目的演示项目,请参见此处: iOS 12 terminates apps in the background for no reason

错误已在 iOS 12.2 beta 2 (16E5191d) 中修复

【讨论】:

你能帮我们跟踪这个错误吗? 我能提供什么帮助?【参考方案2】:

我也有这个问题,昨晚尝试关闭“请勿打扰”,后台定位服务正常。

那么,“请勿打扰”模式可以停止定位服务吗?

除了关闭“请勿打扰”之外,还有其他方法可以避免位置服务停止吗?

【讨论】:

从来没有在我用于测试的 iPad 上打开“请勿打扰”。我实现了一些日志记录来查看应用程序何时以及为何终止。但是当然从那以后就没有了……我还在应用启动时将其更改为locationManager.requestAlwaysAuthorization()locationManager.allowsBackgroundLocationUpdates = true

以上是关于ios12后台定位服务停止的主要内容,如果未能解决你的问题,请参考以下文章

iOS:单击按钮获取坐标,然后停止所有位置服务

无法停止后台服务android

当应用程序进入后台时停止后台服务

后台服务中的 Task.Run 意外停止工作

iOS 7.1 地理围栏和 iBeacons 停止工作

iOS 8 在 10 分钟后停止在后台流式传输音频