-
Notifications
You must be signed in to change notification settings - Fork 6
위치 정보 요청하기
위치 정보를 받기 위해서는 requestAlwaysAuthorization() (항상 허용) 나 requestWhenInUseAuthorization() (앱을 사용하는 동안 허용) 둘중 하나는 호출해야 한다. 또한 requestAlwaysAuthorization()를 호출하기 위해서는 Info.plist 에서 NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription 를 설정해 주어야 한다. requestAlwaysAuthorization()는 다음 둘 중 한 상황에서 호출 가능 한데,
- Not Determined — 사용자가 위치 권한을 설정하지 않았을때.
- When In Use — 사용자가 앱을 사용하는 동안만 위치정보를 허용했을때
사용자가 위치 정보를 허용 한 후 위치를 업데이트 하려면 CLLocationManager 델리게이트의 locationManager(_:didUpdateLocations:) 함수를 사용하자.
CoreLocation은 requestAlwaysAuthorization()이 한번 호출되면, 더이상 호출되는것을 제한한다.
'항상 허용' (Always Authorization) 을 얻어내려면 먼저 'When In Use Permission' (앱을 사용하는 동안 허용) 부터 사용자로부터 받아내야한다. 다시말해 requestAlwaysAuthorization() 는 requestWhenInUseAuthorization() 호출 이후 호출해야한다. 만약 사용자가 '앱을 사용하는 동안 허용' 을 선택했다면 requestAlwaysAuthorization() 으로 '항상 허용'할지 선택하게 할 수 있다. 만약 사용자가 '한번만 허용' 을 선택했다면 CoreLocation은 이후의 requestAlwaysAuthorization() 호출을 일시적으로 무시한다.
- 앱을 사용하는 동안 허용
- 'When In Use' 인증상태로 놔두고 델리게이트에 아무 업데이트도 보내지 않음
- 항상 허용
- CoreLocation 이 앱을 항상 위치를 허용하도록 인증상태를 바꿈. 델리게이트는 CLAuthorizationStatus.authorizedAlways 알림을 받음.
앱이 현재 권한을 설정하지 않았고 requestAlwaysAuthorization()를 호출했을때, CoreLocation은 '항상 허용'을 하기전에 두번 선택지를 띄운다. 첫번째는 NSLocationWhenInUseUsageDescription에 설정된 항목들로, 다음과 같다.
- 앱을 사용하는 동안 허용
- '임시적 항상 허용' 상태가 된다. 델리게이트는 CLAuthorizationStatus.authorizedAlways 알림을 받는다.
- 한번만 허용
- '임시적 사용중 허용' 상태가 된다. 델리게이트는 CLAuthorizationStatus.authorizedWhenInUse 알림을 받고 앱이 더이상 사용중이 아니게되면 CLAuthorizationStatus.notDetermined 알림을 델리게이트에 보낸다
- 허용 안함
- CLAuthorizationStatus.denied 알림을 델리게이트에 보낸다.
두번째는 CLAuthorizationStatus.authorizedAlways 상태를 필요로 하는 이벤트를 전달해야 할 때 나타난다. 만약 앱이 '임시적 항상허용' 상태라면 CoreLocation은 NSLocationAlwaysUsageDescription 에 적힌 선택지를 띄울 것이다.
- 앱을 사용하는 동안 허용
- '사용중 허용' 상태로 바꾸고 델리게이트에 CLAuthorizationStatus.authorizedWhenInUse 알림을 보낸다.
- 항상 허용
- 임시적 항상허용을 항상허용 상태로 바꾼다. 델리게이트는 아무 알림도 받지 않는다.
유저가 이 두번째 선택지에서 선택시, 위치 이벤트나 변경된 허용상태에 대한 델리게이트 메서드가 실행된다. 만약 사용자가 선택지가 뜨고 얼마 지나지 않아 항상 허용을 했을 경우, 앱이 위치 이벤트를 실행한다.
- When your app starts standard location services in the foreground, they continue to run in the background if your app has enabled background location updates in the Capabilities tab of your Xcode project. 위치 서비스를 포그라운드에서 시작하고 백그라운드에서도 이어지게 하려면 Xcode project 의 Capabilities 탭에서 background location update 를 활성화 해야 한다.
트러블 슈팅
회의록
- 2021-10-25(월)
- 2021-10-26(화)
- 2021-10-27(수)
- 2021-10-28(목)
- 2021-11-01(월)
- 2021-11-02(화)
- 2021-11-03(수)
- 2021-11-04(목)
- 2021-11-08(월)
- 2021-11-09(화)
- 2021-11-10(수)
- 2021-11-11(목)
- 2021-11-15(월)
- 2021-11-16(화)
- 2021-11-17(수)
- 2021-11-18(목)
- 2021-11-22(월)
- 2021-11-23(화)
- 2021-11-24(수)
- 2021-11-25(목)
- 2021-11-29(월)
- 2021-11-30(화)
- 2021-12-01(수)
- 2021-12-02(목)
스크럼
- 2021-10-26(화)
- 2021-10-27(수)
- 2021-10-28(목)
- 2021-10-29(금)
- 2021-11-01(월)
- 2021-11-02(화)
- 2021-11-03(수)
- 2021-11-04(목)
- 2021-11-08(월)
- 2021-11-09(화)
- 2021-11-10(수)
- 2021-11-11(목)
- 2021-11-15(월)
- 2021-11-16(화)
- 2021-11-17(수)
- 2021-11-18(목)
- 2021-11-22(월)
- 2021-11-23(화)
- 2021-11-24(수)
- 2021-11-25(목)
- 2021-11-29(월)
- 2021-11-30(화)
- 2021-12-01(수)