IOS
612. (ios/swift5) [간단 소스] CLLocationManager 간단 설명 및 사용 옵션 정리 - 위치 이벤트
투케이2K
2024. 12. 11. 18:45
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Swift
- 개발 툴 : Xcode
- 기술 구분 : CLLocationManager / 위치 이벤트
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------
1. CLLocationManager 은 앱에 위치 관련 이벤트 전달을 시작하거나 중지하는 데 사용하는 객체입니다.
2. CLLocationManager 사용해 이벤트 추적 관련 :
>> 구성 가능한 정확도 수준으로 사용자의 현재 위치에서 크거나 작은 변화를 추적합니다.
>> 선상 나침반에서 방위 변화를 보고합니다.
>> 관심 있는 지리적 지역을 모니터링하고 누군가가 해당 지역에 들어오거나 나갈 때 이벤트를 생성합니다.
>> 근처 블루투스 비콘에 범위를 보고하세요.
3. CLLocationManager 사용 가능 지원 범위 :
>> iOS 2.0 이상
>> 아이패드OS 2.0 이상
>> 맥 카탈리스트 13.1+
>> 맥OS 10.6 이상
>> tvOS 9.0 이상
>> 비전OS 1.0+
>> 워치OS 2.0 이상
4. CLLocationManager 서비스 가용성 결정 관련 :
>> class func significantLocationChangeMonitoringAvailable() -> Bool : 중요한 변경 위치 서비스를 장치에서 사용할 수 있는지 여부를 나타내는 부울 값을 반환합니다.
>> class func headingAvailable() -> Bool : 위치 관리자가 방향 관련 이벤트를 생성할 수 있는지 여부를 나타내는 부울 값을 반환합니다.
>> var isAuthorizedForWidgetUpdates: Bool : 위젯이 위치 업데이트를 수신할 수 있는지 여부를 나타내는 부울 값입니다.
>> var accuracyAuthorization: CLAccuracyAuthorization : 앱이 사용할 수 있는 위치 정확도 수준을 나타내는 값입니다.
>> class func isMonitoringAvailable(for: AnyClass) -> Bool : 지정된 클래스를 사용하여 장치가 지역 모니터링을 지원하는지 여부를 나타내는 부울 값을 반환합니다.
>> class func isRangingAvailable() -> Bool : iBeacon 프로토콜을 사용하는 비콘 범위를 장치가 지원하는지 여부를 나타내는 부울 값을 반환합니다.
>> class func locationServicesEnabled() -> Bool : 장치에서 위치 서비스가 활성화되어 있는지 여부를 나타내는 부울 값을 반환합니다.
5. CLLocationManager 위치 서비스에서 데이터 수신 관련 :
>> var delegate: (any CLLocationManagerDelegate)? : 업데이트 이벤트를 수신하는 대리자 개체입니다.
>> protocol CLLocationManagerDelegate : 연관된 위치 관리자 객체에서 이벤트를 수신하는 데 사용하는 방법입니다.
6. CLLocationManager 위치 서비스에 대한 권한 요청 관련 :
>> func requestWhenInUseAuthorization() : 앱을 사용하는 동안 위치 서비스를 사용할 수 있도록 사용자에게 권한을 요청합니다.
>> func requestAlwaysAuthorization() : 앱 사용 여부에 관계없이 위치 서비스를 사용할 수 있도록 사용자에게 권한을 요청합니다.
>> func requestTemporaryFullAccuracyAuthorization(withPurposeKey: String, completion: (((any Error)?) -> Void)?) : 완전한 정확도로 일시적으로 위치 서비스를 사용할 수 있는 권한을 요청하고 제공된 완료 핸들러에 결과를 보고합니다.
>> func requestTemporaryFullAccuracyAuthorization(withPurposeKey: String) : 완전한 정확성을 바탕으로 일시적으로 위치 서비스를 사용할 수 있는 권한을 요청합니다.
>> var authorizationStatus: CLAuthorizationStatus : 앱의 현재 권한 상태입니다.
>> enum CLAuthorizationStatus : 앱이 위치 서비스를 사용할 수 있는 권한을 나타내는 상수입니다.
>> NSLocationDefaultAccuracyReduced : 앱이 기본적으로 위치 정확도를 낮추도록 요청하는지 여부를 나타내는 부울 값입니다.
>> NSLocationAlwaysAndWhenInUseUsageDescription : 앱이 사용자의 위치 정보에 대한 액세스를 항상 요청하는 이유를 사용자에게 알려주는 메시지입니다.
7. CLLocationManager 거리 및 정확도 지정 관련 :
>> var distanceFilter: CLLocationDistance : 업데이트 이벤트가 생성되기 전에 장치가 수평으로 이동해야 하는 최소 거리(미터)입니다.
>> let CLLocationDistanceMax: CLLocationDistance : 최대 거리를 나타내는 상수.
>> let kCLDistanceFilterNone: CLLocationDistance : 모든 움직임이 보고되어야 함을 나타내는 상수입니다.
>> typealias CLLocationDistance : 기존 위치로부터의 거리(미터)입니다.
>> var desiredAccuracy: CLLocationAccuracy : 앱이 수신하려는 위치 데이터의 정확도.
>> typealias CLLocationAccuracy : 지리 좌표의 정확도.
8. CLLocationManager 표준 위치 서비스 실행 관련 :
>> func startUpdatingLocation() : 사용자의 현재 위치를 보고하는 업데이트 생성을 시작합니다.
>> func stopUpdatingLocation() : 위치 업데이트 생성을 중지합니다.
>> func requestLocation() : 사용자의 현재 위치를 한 번만 전달해 달라고 요청합니다.
>> var pausesLocationUpdatesAutomatically: Bool : 위치 관리자 객체가 위치 업데이트를 일시 중지할 수 있는지 여부를 나타내는 부울 값입니다.
>> var allowsBackgroundLocationUpdates: Bool : 앱이 백그라운드에서 실행될 때 위치 업데이트를 받는지 여부를 나타내는 부울 값입니다.
>> var showsBackgroundLocationIndicator: Bool : 앱이 백그라운드에서 위치 서비스를 사용할 때 상태 표시줄의 모양이 바뀌는지 여부를 나타내는 부울 값입니다.
>> var activityType: CLActivityType : 앱의 위치 세션에 있는 동안 사용자가 일반적으로 수행할 것으로 예상하는 활동 유형입니다.
>> enum CLActivityType : 위치 업데이트와 관련된 활동 유형을 나타내는 상수입니다.
9. CLLocationManager 중요한 변경 위치 서비스 실행 관련 :
>> func startMonitoringSignificantLocationChanges() : 중요한 위치 변경에 따라 업데이트 생성을 시작합니다.
>> func stopMonitoringSignificantLocationChanges() : 중요한 위치 변경에 따라 위치 이벤트 전달을 중지합니다.
10. CLLocationManager 방문 위치 서비스 실행 관련 :
>> func startMonitoringVisits() : 방문 관련 이벤트 전달을 시작합니다.
>> func stopMonitoringVisits() : 방문 관련 이벤트 전달을 중단합니다.
11. CLLocationManager Heading 서비스 실행 관련 :
>> func startUpdatingHeading() : 사용자의 현재 방향을 보고하는 업데이트 생성을 시작합니다.
>> func stopUpdatingHeading() : 헤딩 업데이트 생성을 중지합니다.
>> func dismissHeadingCalibrationDisplay() : 화면에서 방위 보정 보기를 즉시 닫습니다.
>> var headingFilter: CLLocationDegrees : 새로운 방향 이벤트를 생성하는 데 필요한 최소 각도 변화입니다.
>> let kCLHeadingFilterNone: CLLocationDegrees : 모든 헤더 값을 보고해야 함을 나타내는 상수입니다.
>> typealias CLLocationDegrees : 위도 또는 경도 값입니다.
>> var headingOrientation: CLDeviceOrientation : 방향 값을 계산할 때 사용할 장치 방향입니다.
>> enum CLDeviceOrientation : 장치의 물리적 방향을 나타내는 상수입니다.
12. CLLocationManager 지역 모니터링 서비스 실행 관련 :
>> var monitoredRegions: Set<CLRegion> : 모든 위치 관리자 객체가 모니터링하는 공유 지역 집합입니다.
>> var maximumRegionMonitoringDistance: CLLocationDistance : 지역에 할당할 수 있는 가장 큰 경계 거리입니다.
13. CLLocationManager 비콘 거리 측정 수행 관련 :
>> func startRangingBeacons(satisfying: CLBeaconIdentityConstraint) : 지정된 비콘 제약 조건에 대한 알림 전달을 시작합니다.
>> func stopRangingBeacons(satisfying: CLBeaconIdentityConstraint) : 지정된 비콘 제약 조건에 대한 알림 전달을 중지합니다.
>> var rangedBeaconConstraints: Set<CLBeaconIdentityConstraint> : 현재 범위를 사용하여 추적 중인 비콘 제약 세트입니다.
14. CLLocationManager 위치 푸시 알림 모니터링 관련 :
>> func startMonitoringLocationPushes(completion: ((Data?, (any Error)?) -> Void)?) : Apple Push Notification Service(APNs) 위치 푸시 전달에 대한 모니터링을 시작하고, 푸시를 보내기 위한 장치별 토큰을 제공합니다.
>> func stopMonitoringLocationPushes() : Apple Push Notification Service(APNs) 위치 푸시에 대한 모니터링을 중지합니다.
15. CLLocationManager 최근 위치 및 방향 데이터 가져오기 관련 :
>> var location: CLLocation? : 가장 최근에 검색된 사용자 위치입니다.
>> var heading: CLHeading? : 가장 최근에 보고된 제목입니다.
16. CLLocationManager 위치 업데이트 연기 관련 :
>> let CLTimeIntervalMax: TimeInterval : 무제한의 시간을 나타내는 값.
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[애플 공식 사이트]
https://developer.apple.com/documentation/corelocation/cllocationmanager
[CLLocationManager 사용해 위치 권한 요청 수행 실시]
https://blog.naver.com/kkh0977/222923519243?trackingCode=blog_bloghome_searchlist
[비콘 목록 다중 스캔 실시 - beacon list multi scan]
https://blog.naver.com/kkh0977/222637183052?trackingCode=blog_bloghome_searchlist
[CLLocationManager 사용해 실시간 위치 위도 , 경도 확인 실시 - latitude , longitude]
https://blog.naver.com/kkh0977/222850768656?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형