swiftUI

SwiftUI - CLLocationManager 란

Coding_happyytw 2023. 10. 8. 12:08

앱에 위치 관련 이벤트 전달을 시작하고 중지하는 데 사용하는 객체라고 한다.

 

CLLocationManager 객체는 앱의 위치 관련 동작을 관리하는 중앙 관리자다.

CLLoactionManager 를 사용하여 위치 서비스를 구성하고 시작 및 멈출 수 있다.

* 크고 작은 유저의 현재 위치를 파악할 수 있다.

* 주변 지역에 대한 정보 또는 그 지역에 누가 왔고 떠났는지를 모니터링할 수 있다.

* 주변에 있는 블루투스 비콘을 알아낼 수 있다.

 

1개 또는 여러개의 location-manager를 만들어서 위치 데이터를 활용한다.

location-manager 객체를 만들면 Core Location이 위치가 변화를 감지했을때 어떻게 얼마나 자주 보고를 할 것인지를 설정해야한다.

특히, 앱의 요구를 반영하는 값으로 distanceFilter와 desiredAccuracy 를 구성한다.

distanceFilter: 사용자가 (최소 몇미터) 움직였을때 업데이트를 시켜야하는지

desiredAccuracy: 사용자가 값을 받고싶은 위치의 정확도

 

CLLoactionManager 객체는 모든 위치와 관련된 정보들을 CLLocationManagerDelegate 프로토콜을 준수하는 delegate 객체에 전달한다.

location manager가 초기화를 마친 후 시스템이 앱의 권한 상태를 delegate의 locationManagerDidChangeAuthorization(_:) 메소드에 보고하기 때문에 location manager를 구성할 때 즉시 delegate를 할당해야한다.

Core Location은 CLLocationManager 객체를 초기화한 스레드의 RunLoop을 사용하여 delegate 객체의 메소드를 호출한다.

그 스레드 자체에는 앱의 메인 스레드에서 찾을 수 있는 것과 같은 활성 RunLoop이 있어야 합니다.