应用在后台或暂停时位置更新

joh*_*spo 7 iphone location background core-location ios

问候所有.

我正在尝试将重要的位置更改和区域支持实施到我的应用中.当应用程序处于活动状态时,接收位置更新显然没有问题.我的问题是如何在应用程序未处于活动状态时处理更新.

这是我对如果检测到重要位置更改或区域进入/退出会发生什么的理解:

  • 如果应用程序处于后台或暂停,iOS会在我现有的位置委托上调用locationManager:didUpdateToLocation:fromLocation :(或locationManager:didEnterRegion :).
  • 如果应用程序终止,iOS会调用application:didFinishLaunchingWithOptions:并在我的应用程序委托上使用密钥UIApplicationLaunchOptionsLocationKey.此时,我需要创建一个新的位置管理器实例来获取新位置.

它是否正确?我错过了什么吗?

感谢帮助.

问候, - 约翰

hon*_*eng 8

你是部分正确的.

如果应用程序处于后台,并且您正在使用重要的位置更改:

  1. 该应用程序将调用locationManager:locationDidUpdateToLocation:fromLocation
  2. 如果应用程序在后台崩溃,它将调用application:didFinishLaunchingWithOption:with UIApplicationLaunchOptionLocationKey.然后,您必须再次初始化位置管理器以获得重要的位置更改.然后这将进入locationManager:locationDidUpdateToLocation:fromLocation.这一步很重要

如果应用程序处于后台,并且您正在使用区域监控

  1. locationManager:locationDidUpdateToLocation:不会调用fromLocation
  2. 应用程序调用locationManager:didEnterRegion: