我正在开发一个监控用户位置的应用程序。
在我给startUpdatingLocation()
打电话之后,我可以把应用程序放到后台。它将继续更新位置。效果很好。
我的问题是:我可以从后台的didExitRegion
调用重新启动连续的位置更新吗?现在,如果我再次调用startUpdatingLocation()
,应用程序将在10秒后终止。
func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
locationManager.startUpdatingLocation()
}
所以步骤是:
我要求位置经理
startUpdatingLocation()
。当持续收到位置更新时,用户将应用程序置于后台。
用户停了一会儿(例如咖啡),所以我要求位置管理器放下地理围栏并
stopUpdatingLocation()
。用户继续他的驱动器,所以当他离开地理围栏时,我想请位置经理再次
startUpdatingLocation()
。 最佳答案
请使用
startMonitoringSignificantLocationChanges()
即使在应用程序被杀后也能正常工作。如果应用程序被终止,系统将自动终止startUpdatingLocation()。
您还需要启用这些功能,如图所示。