LocationManager는 기본적으로 새로운 위치 업데이트가 있을 때마다 didUpdateLocations 메소드를 반복적으로 호출한다.
kCLDistanceFilterNone
이며, 모든 위치 데이터를 전달해준다.let manager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.distanceFilter = 100
}
kCLLocationAccuracyReduced
를 사용한다.kCLLocationAccuracyBest
으로, 최대한 정확한 위치를 제공한다.기본적으로 startUpdatingLocation이 시작된 뒤, 앱이 백그라운드 실행으로 바뀌면 다시 포어그라운드로 바뀌기 전까지 이벤트 전달이 중지된다.
UIBackgroundModes
키를 포함해야 한다.override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.allowsBackgroundLocationUpdates = true
}
allowsBackgroundLocationUpdates
를 true로 해준다.startUpdatingLocation으로 이벤트를 받기 시작할 경우, stopUpdatingLocation을 하거나 앱이 백그라운드로 이동하기 전까지는 이벤트를 계속 전달하게 된다.
만약 사용자의 위치가 한 번만 필요할 경우, requestLocation
을 사용하도록 하자.
.automotiveNavigation
으로 설정할 경우 움직임이 없을 때 iOS가 움직임을 감지하기 전까지 하드웨어를 꺼둘 수 있다.pausesLocationUpdatesAutomatically
에 false를 저장하자.CLActivityType
의 기본값은 .other
이다.