gpt4 book ai didi

swift - Swift 中动态修改位置后台更新

转载 作者:行者123 更新时间:2023-11-30 14:16:20 25 4
gpt4 key购买 nike

我正在开发一个 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")
}
}

谢谢:)

最佳答案

在您的 View Controller 中,注册 UIApplicationDidEnterBackground 通知,并在发生这种情况时检查用户是否按下了开始按钮(将状态值存储在变量中),如果没有,则访问位置管理器对象并调用 stopUpdatingLocation。

关于swift - Swift 中动态修改位置后台更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31131078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com