我正在开发一个使用用户位置并存储其路径的iOS应用。我有一切正常工作,除非我在使用应用程序时请求用户使用其位置的权限,并且启用了后台更新后,除非我强行退出应用程序,否则我似乎无法停止位置更新。
我想要实现的是当用户首次启动应用程序时,我会获得他们的位置并更改相机位置。然后,如果用户按下开始按钮,则启用后台位置更新,但是如果他们将应用程序放入后台而不按下开始位置,则不会跟踪更新。
我在开始和结束时都打印,但我仍然需要退出应用程序以停止位置更新。
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.pausesLocationUpdatesAutomatically = true
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.distanceFilter = 0;
locationManager.requestWhenInUseAuthorization()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
locationManager.startUpdatingLocation()
viewMap.myLocationEnabled = true
viewMap.settings.myLocationButton = true
println("Location updated and started")
}
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
if let location = locations.first as? CLLocation {
viewMap.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 60)
locationManager.stopUpdatingLocation()
println("Location updated and stopped")
}
}
谢谢:)
答案 0 :(得分:0)
在视图控制器中,注册通知UIApplicationDidEnterBackground,当发生这种情况时,检查用户是否按下了开始按钮(将状态值存储在变量中),如果没有,则访问位置管理器对象并调用stopUpdatingLocation。