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

// --------------------------------------------------------------------------------------
​

 

반응형