CoreLocation - 通过授权WhenInUse授权在后台持续更新位置。

问题描述 投票:0回答:2

我需要在后台跟踪用户的位置,就像waze和苹果地图的导航功能一样。

但是,我想将它与 授权使用时间 的权限。

据我所知,即使是在拥有了 授权使用时间 审批 前景 (蓝线出现在状态栏顶部--表示用户知道应用程序在进行定位工作)

当我授予 认可的总是 的权限。

但是,当该权限是 授权使用时间我将应用程序发送到后台,出现了蓝色的线条,但应用程序在一分钟后被终止,并在日志中出现以下消息。调试器发出的消息: 由于信号9而终止

在进入后台之前,我是这样跟踪位置更新的。

locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.delegate = self
locationManager.startUpdatingLocation()

而我的plist中包含了后台模式。

<key>UIBackgroundModes</key>
<array>
    <string>location</string>
</array>
ios swift core-location
2个回答
0
投票

这可能与核心位置无关。信号9表示你已经因为使用了太多的内存或类似的原因而被杀死。你可能需要在进入后台之前释放资源。或者你可能试图在后台做其他事情,但你没有告诉我们。


0
投票

尝试设置 showsBackgroundLocationIndicator 属性为真

https:/developer.apple.comdocumentationcorelocationchoosing_the_location_services_authorization_to_request(请求)。 说。

只有在应用 "使用中 "时,CLAuthorizationStatus.authorizedWhenInUse的应用才能使用位置服务。在所有支持When In Use授权的平台上,应用程序被认为是在使用中。

  • 当应用在前台运行时。

  • 在应用程序离开前台后的几秒钟内,您的应用程序完成用户发起的任何当前位置任务的短暂宽限期。

  • 当应用显示后台位置使用指示器(showsBackgroundLocationIndicator)时。在iOS上,该指示器是屏幕顶部的一个蓝色条形或药丸;在watchOS上,它是一个小图标。

如果能看完整篇文章就更好了:)

如果你不想看到顶部的蓝色条状物,可以使用 authorizedAlways 认证类型:

© www.soinside.com 2019 - 2024. All rights reserved.