SwiftUI 实时位置更新



我已经在我的一个可观察对象中实现了CLLocationManagerDelegate,我希望在位置更改时收到通知。一切正常,但我打印了一次"位置更改"。我的猜测是我应该从外面打电话给manager.startUpdatingLocation(),但我不知道到底是从哪里来的。

import CoreLocation
import Combine
class LocationManagerService: NSObject, ObservableObject, CLLocationManagerDelegate {
var manager: CLLocationManager = CLLocationManager()
@Published var location: CLLocation?
@Published var enabled: Bool = false

override init() {
super.init()
manager.delegate = self

if CLLocationManager.locationServicesEnabled() {
manager.requestWhenInUseAuthorization()
// manager.requestAlwaysAuthorization()
manager.startUpdatingLocation()
}
}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("location changed") // prints only once
location = locations.first
manager.stopUpdatingLocation()
}

func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
enabled = CLLocationManager.locationServicesEnabled()
}
}

注释此行停止更新

location = locations.first 
manager.stopUpdatingLocation() // this 

最新更新