CoreLocation - 通过 authorizedWhenInUse 授权在后台持续更新位置
CoreLocation - Continuous location update in background with authorizedWhenInUse authorization
我需要在后台跟踪用户位置,例如位智和苹果地图中的导航功能。
但是,我想在 authorizedWhenInUse 权限下使用它。
据我所知,即使有 authorizedWhenInUse 权限,应用程序也可以跟踪用户位置,因为在这种状态下,应用程序被认为是 foreground (状态栏顶部出现蓝线 - 表示用户知道该应用程序正在执行定位工作)
当我授予 authorizedAlways 权限时一切正常。
但是,当权限为authorizedWhenInUse,并且我将应用程序发送到后台时,出现蓝线,但应用程序在大约一分钟后终止,并出现以下消息在日志中:
来自调试器的消息:由于信号 9
而终止
以下是我在进入后台之前跟踪位置更新的方式:
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.delegate = self
locationManager.startUpdatingLocation()
我的 plist 包含后台模式:
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
尝试将 showsBackgroundLocationIndicator
属性 设置为 true
Location services are available to apps with
CLAuthorizationStatus.authorizedWhenInUse only while the app is “in
use”. On all platforms that support When In Use authorization, an app
is considered in use:
When the app runs in the foreground.
In the few seconds after an app leaves the foreground, a short grace
period for your app to finish any current location tasks the user
initiated.
When the app shows the background location usage indicator
(showsBackgroundLocationIndicator). On iOS, the indicator is a blue
bar or pill at the top of the screen; on watchOS it’s a small icon.
阅读整篇文章会很好:)
如果您不想在顶部看到蓝色条,请使用 authorizedAlways
身份验证类型。
这可能与核心位置无关。信号 9 表示您已因使用过多内存或类似情况而被杀。您可能需要在进入后台之前释放资源。或者您可能正在尝试在您没有告诉我们的背景下做其他事情。
我需要在后台跟踪用户位置,例如位智和苹果地图中的导航功能。
但是,我想在 authorizedWhenInUse 权限下使用它。
据我所知,即使有 authorizedWhenInUse 权限,应用程序也可以跟踪用户位置,因为在这种状态下,应用程序被认为是 foreground (状态栏顶部出现蓝线 - 表示用户知道该应用程序正在执行定位工作)
当我授予 authorizedAlways 权限时一切正常。
但是,当权限为authorizedWhenInUse,并且我将应用程序发送到后台时,出现蓝线,但应用程序在大约一分钟后终止,并出现以下消息在日志中:
来自调试器的消息:由于信号 9
以下是我在进入后台之前跟踪位置更新的方式:
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.delegate = self
locationManager.startUpdatingLocation()
我的 plist 包含后台模式:
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
尝试将 showsBackgroundLocationIndicator
属性 设置为 true
Location services are available to apps with CLAuthorizationStatus.authorizedWhenInUse only while the app is “in use”. On all platforms that support When In Use authorization, an app is considered in use:
When the app runs in the foreground.
In the few seconds after an app leaves the foreground, a short grace period for your app to finish any current location tasks the user initiated.
When the app shows the background location usage indicator (showsBackgroundLocationIndicator). On iOS, the indicator is a blue bar or pill at the top of the screen; on watchOS it’s a small icon.
阅读整篇文章会很好:)
如果您不想在顶部看到蓝色条,请使用 authorizedAlways
身份验证类型。
这可能与核心位置无关。信号 9 表示您已因使用过多内存或类似情况而被杀。您可能需要在进入后台之前释放资源。或者您可能正在尝试在您没有告诉我们的背景下做其他事情。