仅在后台请求位置后应用程序出现在前台时,didUpdateLocations才会调用

时间:2019-05-16 22:06:41

标签: ios objective-c push-notification core-location cllocationmanager

我有一个iOS应用程序,该应用程序启用了用于远程通知的后台模式。整个使用的CLLocationManager实例是通过requestAlwaysAuthorization授权的。

我有一个内部逻辑,当从content-available: 1接收到静默推送通知(didReceiveRemoteNotification)时触发应用程序,该通知进一步在requestLocation对象上调用CLLocationManager

当应用程序处于前台时,一切正常,并且在收到静默推送后的一段时间内,该应用程序从iOS接收位置更新。

但是,在应用程序处于后台的情况下,didReceiveRemoteNotification会被正确触发并调用requestLocation。但是,此后很长一段时间我都没有收到didUpdateLocations的任何点击。此后,当应用程序再次回到前台时,将通过回调接收位置更新。

因此,看来该应用正等待来到前台来触发位置更新(尽管它是在很久以前才被要求的)。

  1. 这背后的逻辑推理是什么?或者,这可以特定于任何设备或iOS版本吗?
  2. 该问题的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

请从项目功能中启用“后台模式”,然后启用“位置更新”。启用此功能后,唯一在后台获取更新(不处于终止状态)的配置是将“ allowsBackgroundLocationUpdates”设置为true(您已经完成)。

有关在后台获取位置的更多信息,请遵循:

https://developer.apple.com/documentation/corelocation/cllocationmanager/1620568-allowsbackgroundlocationupdates