iOS/설명
[iOS] Background Modes의 Location Updates
Sky Titan
2022. 5. 30. 22:14
728x90
Apple Developer Documentation
developer.apple.com
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