728x90
Handling Location Events in the Background
- 대부분의 앱은 foreground에서 위치 서비스를 사용하지만 종종 Background 상태에서도 위치 정보를 업데이트 받아야할 필요가 있다.
- Application Capabilities의 Background Mode에서 Location Updates를 사용하면 백그라운드 상태에서도 위치 정보를 업데이트 받을 수 있다.
- 이 때 CLLocationManager의 allowsBackgroundLocationUpdates를 true로 해놓아야 한다.
- stopUpdatingLocation() 메서드를 호출하기 전까지 앱은 Background state로 유지되고 위치 정보를 업데이트 받게 된다.
import UIKit
import CoreLocation
class ViewController: UIViewController {
let manager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.allowsBackgroundLocationUpdates = true
manager.requestAlwaysAuthorization()
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
manager.startUpdatingHeading()
manager.requestLocation()
}
}
extension ViewController: CLLocationManagerDelegate {
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
manager.startUpdatingHeading()
manager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
print("didupdate \(location.coordinate.latitude) \(location.coordinate.longitude)")
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("error \(error.localizedDescription)")
}
}
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] App launch Sequence (0) | 2022.06.06 |
---|---|
[iOS] CFGetRetainCount (0) | 2022.06.02 |
[iOS] Xcode에서 Application state 확인하기 (0) | 2022.05.30 |
[iOS] Local Notification은 suspended에서 동작할까 (3) | 2022.05.30 |
[iOS] applicationWillTerminate (0) | 2022.05.25 |
댓글