# 위치 권한 설정 (info.Plist)

minin·2021년 10월 20일
0

Xcode

목록 보기
4/9
post-custom-banner

# 위치 권한 설정 (info.Plist)


iOS는 앱이 사용되는 동안 '나의 위치 정보를 제공하겠는가?'에 대한 세부적인 통제권을 사용자가 소유하고 있다. 따라서 개발자는 다양한 상황에 대한 권한을 사용자에게 요청해야 하고, 사용자가 이를 허용했을 때 비로소 그 정보에 접근할 수 있다.

그리고 앱에서 요구하는 접근 권한은 모두 info.plist에 지정해 주어야 한다. 오늘은 위치 정보의 접근 권한에 대해 알아 보았다!
(그리고 이해하지 못해 울먹이는데...)

지금부터 하나하나씩 살펴보자!

  • Privacy - Location When In Use Usage Description (iOS 11 이상)
    → 앱이 포그라운드에서 실행 중일 때만 위치 정보에 엑세스

  • Privacy - Location Always and When In Use Usage Description (iOS 11 이상)
    → 앱이 백그라운드에서 실행되는 동안 위치 정보에 엑세스

  • Privacy - Location Always Usage Description (iOS 11 이전, deprecated)
    → 앱이 백그라운드에서 위치 정보에 엑세스 하고, iOS 11이전의 대상에 배포하는 경우!

  • Privacy - Location Temporary Usage Description Dictionary
    → 앱의 한 부분에서 사용자 위치에 대한 임시 엑세스를 요청하는 이유를 설명

  • Privacy - Location Usage Description(mac)
    → macOS 앱이 사용자의 위치 정보에 엑세스하는 API를 사용하는 경우에만 필요

  • Privacy - Location Default Accuracy Reduced (iOS 14 이상)‼️
    위치 정확도에 대한 앱의 기본 동작을 설정하려면 정보 속성 목록에 이 키를 포함할 수 있음 ← ??

    무슨 이야기인지 알아보자면!

    true: 기본적으로, 정확도가 떨어지는지 묻는 메세지가 표시되도록 키 값 설정
    → 사용자 선택 X. 대략적인 위치만을 제공
    → only reducedAccuracy

    false: 전체 위치 정확도를 묻는 메시지가 표시되도록 설정(default)
    → 구체적인 위치를 제공할지,하지 않을지에 대해서 사용자가 선택 가능
    fullAccuracy and reducedAccuracy

    나는 이 부분이 너무 이해가 안가서 어려웠는데..!
    ✔︎reducedAccuracy: 반경 5km 정도 표시, 20분에 한 번씩 조회
    ✔︎fullAccuracy: 정확한 (실시간) 정보

    info.plist에서 Location Default Accuracy Reduced

    ✔︎ true: 위 사진의 오른쪽 그림처럼, 정확한 위치 정보 토글이 없고, reducedAccuracy만을 제공받는다.
    ✔︎ false: 위 사진의 왼쪽 그림처럼, 정확한 위치 정보 제공의 여부를 선택할 수 있는 on/off 토글이 있어, reducedAccuracyfullAccuracy를 제공받을 수 있다.

    그리고 아무 설정도 하지 않았다면, 디폴트는 false로, 두 가지 중에서 선택할 수 있다!(정확한 위치 정보: 끔/켬)

    나는 너어어어무 헷갈려서 직접 info.plist에서 true, false 값을 줬는데, 아무 변화가 없었다. (그래서 진짜 헷갈렸음)
    찾아보니 이것은 Xcdoe의 버그였다.😇

    info.plist가 String값으로 저장되어서 true/false값이 제대로 인식 되지 않았던 것.(무언가 써져있으니 무조건 true로 인식된걸가..?)
    아무튼 해결 방법은, 소스코드에서 직접 true로 설정해 주면 된다.(간단)

    ⛔️ Privacy - Location Default Accuracy Reduced: True

    1. info.plist 소스코드로 열기
    2. NSLocationDefaultAccuracyReduced 부분 바꿔준다!
    3. 다시 open as를 property List로 바꿔주면, 이전과는 다르게 Yes/No로 바뀌어있는 것을 볼 수 있다.
    4. 실행하면? 제대로 나온다.
profile
🍫 iOS 🍫 Swift
post-custom-banner

0개의 댓글