TIL

[Sesac IOS] 29일차 TIL

29일차 수업 내용을 정리한 글입니다. 


Learned

Authorization과 Privacy

1) 개요

  • iOS는 사용자의 민감한 정보(Privacy)에 접근할 때 사용자에게 권한(Authorization)을 요청함.
  • 민감한 정보란 사용자의 연락처, 사진 앨범, 위치 등의 데이터를 의미함.
  • 앱은 사용자에게 정말 필요한 최소한의 권한만을 요청하여
    사용자와 신뢰를 구축함으로써 더 나은 사용자 경험을 제공할 수 있음.
  • 점점 사용자가 구체적으로 앱을 통제할 수 있는 방향으로 발전하고 있음.
    ex) 위치 정보의 정확도 또는 "앱을 사용하는 동안에만 허용" 등의 옵션

2) Authorization Status

  • 현재 사용자가 부여한 권한의 상태에 따라 권한 부여를 요청하거나 알럿을 띄울 수 있음.
  • 사용자는 언제든지 시스템 설정에서 앱마다 부여한 권한을 변경할 수 있음.
  • 권한이 변경되면 변경된 앱에서 시스템에 의해 Delegate 메서드가 호출됨.
디바이스의 위치 서비스를 비활성화하면 모든 앱에 대한 위치 서비스 설정이 초기화된다.
  • CLAuthorizationStatus
    • notDetermined
      사용자가 아직 요청한 권한에 대해 응답하지 않아서 결정되지 않은 상태
    • restricted
      앱이 위치 서비스를 사용할 수 없는 상태 ex) 자녀 보호 기능 활성화
    • denied
      사용자가 권한 요청을 거부했거나 이후 비활성화 한 상태
      디바이스의 위치 서비스를 비활성화 한 경우
      사용자가 기기의 비행기 모드를 활성화 한 경우
    • authorizedAlways
      앱이 항상 사용자의 위치 정보를 사용할 수 있도록 승인된 상태
      백그라운드 상태에서도 위치 정보에 접근할 수 있음
    • authorizedWhenInUse
      앱이 사용중일 때만 위치 정보를 사용할 수 있도록 승인된 상태

3) Privacy 권한 설정

  • 프로젝트의 info.plist에서 권한을 요청할 privacy를 설정
  • info.plist에 설정한 값(문자열)이 권한 요청 알럿에 포함되기 때문에
    권한 요청 메서드를 호출하기 전에 반드시 Privacy 권한 설정이 돼있어야 함.
권한 요청 메서드
- requestWhenInUseAuthorization()
권한 상태가 notDetermined일 때만 호출할 수 있고 앱이 사용중 일때 권한을 요청하는 얼럿을 띄움.
- requestAlwaysAuthorization()
권한 상태가 notDetermined 또는 authorizedWhenInUse 일 때만 호출 가능하며,
WhenInUse 권한을 먼저 요청하고 권한을 얻으면 추가로 Always 권한을 요청함.
사용자가 "한 번 허용"으로 응답하면 Always 권한 요청 알럿을 띄우지 않음.
  • 반드시 필요한 privacy에만 권한을 요청하고 privacy를 사용하는
    구체적인 상황을 사용자에게 알려주어야 함. (Description)
    ex) "주변의 영화관을 찾기 위해 사용자의 위치 정보를 요청합니다." 등
  • Location의 경우 요청할 수 있는 권한이 세부적으로 나뉘어있음.
    • Privacy - Location When In Use Usage Description (iOS 11 이상)
      앱이 foreground 상태에 있을때만 사용자 위치 정보를 사용하려고 함.
    • Privacy - Location Always and When In Use Usage Description (iOS 11 이상)
      앱이 background 상태일때도 사용자 위치 정보를 사용하려고 함.
    • Privacy - Location Default Accuracy Reduced (iOS 14이상)
      기본값으로 대략적인 위치 정보를 사용할 것을 요청할지 여부 (true)
    • Privacy - Location Temporary Usage Description Dictionary
      앱이 임시적으로 사용자의 위치 정보를 사용하려고 함.
    • Privacy - Location Always Usage Description
      iOS 11 이전 버전에서 사용자의 위치 정보를 사용하려고 함.
    • Privacy - Location Usage Description
      macOS 앱에서 사용자의 위치 정보를 사용하려고 함.
사용자의 위치 정보를 사용하려고 하는 상황마다 위치 정보가 사용되는 구체적인 설명(Description)을 명시해야 함. 
CLAccuracyAuthorization (iOS 14 이상)
앱이 얼마나 정확하게 사용자의 위치 정보를 사용할지 부여된 권한의 상태

- fullAccuracy : 앱이 완전한 정확도로 사용자의 위치 정보를 사용할 수 있음.
- reducedAccuracy: 앱이 대략적으로 사용자의 위치 정보를 사용할 수 있음.

 


이상입니다.

'TIL' 카테고리의 다른 글

[Sesac IOS] 31일차 TIL  (0) 2022.08.17
[Sesac IOS] 30일차 TIL  (0) 2022.08.16
[Sesac IOS] 28일차 TIL  (0) 2022.08.11
[Sesac IOS] 26~27일차 TIL  (0) 2022.08.09
[Sesac IOS] 25일차 TIL  (0) 2022.08.07