Swift CLLocationManager委托在应用程序挂起后不接收位置更新,尽管启用了后台位置更新

Swift CLLocationManager委托在应用程序挂起后不接收位置更新,尽管启用了后台位置更新,swift,background,location,cllocationmanager,Swift,Background,Location,Cllocationmanager,我试图在应用程序挂起时接收位置更新-根据我阅读的文档,这不应该是一个问题,我正在遵循所有必需的步骤,但是一旦应用程序挂起,位置更新似乎不会发生 我看到过类似的帖子,其中包含使用startMonitoringSignificantLocationChanges的解决方案,但根据我对文档的理解,我不需要在startUpdatingLocation之上实现这一点 根据文档,如果启用后台位置更新,系统将暂停,但当有新的位置数据时,系统将被唤醒 由于文档说明“在应用程序挂起的情况下,系统会唤醒应用程序,将

我试图在应用程序挂起时接收位置更新-根据我阅读的文档,这不应该是一个问题,我正在遵循所有必需的步骤,但是一旦应用程序挂起,位置更新似乎不会发生

我看到过类似的帖子,其中包含使用startMonitoringSignificantLocationChanges的解决方案,但根据我对文档的理解,我不需要在startUpdatingLocation之上实现这一点

根据文档,如果启用后台位置更新,系统将暂停,但当有新的位置数据时,系统将被唤醒

由于文档说明“在应用程序挂起的情况下,系统会唤醒应用程序,将更新发送给位置管理器的代表”我希望我可以像处理前台或后台应用程序一样处理位置更新

我在“功能”选项卡和info.plist中选择了位置更新,关键UIBackgroundModes包括值数组中的位置

我错过了什么

作为参考,以下是我如何声明我的CLLocationManager

lazy var locationManager: CLLocationManager = {
    let locationManager = CLLocationManager()
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.delegate = self
    locationManager.activityType = .fitness
    locationManager.requestAlwaysAuthorization()
    locationManager.requestWhenInUseAuthorization()
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.pausesLocationUpdatesAutomatically = true
    return locationManager
}()

“您可以从Xcode项目中“功能”选项卡的“背景模式”部分启用位置支持。(您也可以通过在应用程序的Info.plist文件中包含带有位置值的UIBackgroundModes键来启用此支持。)启用此模式不会阻止系统挂起应用程序,但它会告诉系统,只要有新的位置数据要传递,就应该唤醒应用程序。因此,此键有效地让应用程序在后台运行,以便在发生位置更新时处理位置更新。“


“当应用程序位于前台、在后台运行或挂起时,系统会向后台位置应用程序发送位置更新。对于挂起的应用程序,系统会唤醒应用程序,将更新发送给位置管理器的代表,然后尽快将应用程序返回挂起状态。”

我也遇到了同样的问题,防止应用程序挂起的唯一方法是设置

locationManager.pausesLocationUpdatesAutomatically = false
pausesLocationUpdatesAutomatically
设置为
true
时,系统会将应用程序置于挂起状态,并且在用户手动将应用程序再次置于前台之前不会再接收到位置更改