【发布时间】: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 下运行良好的代码。
标签: ios background-process location-services