Requesting Authorization for Location Services

Panther·2021년 8월 21일
0
post-custom-banner

https://developer.apple.com/documentation/corelocation/requesting_authorization_for_location_services

"Ask the user for permission to access their location."

사용자 위치에 접근 할 수 있도록 사용자에게 허가를 요청합니다.

Overview

사용자의 위치 데이터를 다루는 것은 많은 주의가 필요하며, 시스템은 앱에게 이와 같은 정보에 접근하기 위한 사용자의 권한을 가져오길 요청합니다. 권한을 요청하려면 앱이 필요한 권한 상태에 따라 requestWhenInUseAuthorization() 혹은 requestAlwaysAuthorization()을 호출해야 합니다. 어떤 권한의 타입을 요청해야 하는지 결정하는 것에 대한 정보는 Choosing the Location Services Authorization to Request를 보시기 바랍니다. Xcode 프로젝트는 권한 프롬프트에서 사용되는 목적 스트링이 설정되어야 합니다.

Choosing the Location Services Authorization to Request
https://developer.apple.com/documentation/corelocation/choosing_the_location_services_authorization_to_request
https://velog.io/@panther222128/Choosing-the-Location-Services-Authorization-to-Request

Configure Purpose Strings in Xcode

requestWhenInUseAuthorization() 혹은 requestAlwaysAuthorization() 호출을 위한 앱을 준비하려면 앱의 Info.plist 파일에 목적 스트링을 갖는 키를 추가해야 합니다. 시스템은 권한 요청 대화 상자에서 목적 스트링을 표시합니다. 앱이 요구하는 목적 스트링을 갖는 키를 Xcode에서 설정하시기 바랍니다.

KeyRequired when:
NSLocationWhenInUseUsageDescription앱이 '앱이 사용중일 때' 권한 혹은 '항상' 사용하겠다는 권한을 요청합니다.
NSLocationAlwaysAndWhenInUseUsageDescription앱이 '항상' 권한을 요청합니다.
NSLocationUsageDescription앱이 macOS에서 실행하고 위치 서비스를 사용합니다.
NSLocationAlwaysUsageDescriptioniOS 10 및 이전 버전을 지원하고, '항상' 권한을 요청합니다.

목적 스트링에 대한 정보는 Human Interface Guidelines를 보시기 바랍니다.

Human Interface Guidelines
https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/accessing-user-data/

Important
앱의 Info.plist 파일에 요구되는 키를 추가해야 합니다. 요구되는 키가 존재하지 않으면 권한 요청은 즉시 실패합니다.

사용자의 위치를 사용하기 위해 권한을 요청할 때 사용자 상호작용의 컨텍스트를 고려해야 합니다.

  • 사용자가 앱에서 작업 수행을 위해 위치 서비스가 필요할 때에만 권한을 요청하시기 바랍니다. 왜 앱이 위치 서비스를 사용해야 하는지가 사용자에게 명확하지 않으면 사용자는 요청을 거부할 것입니다.
  • 앱이 포어그라운드로 돌아올 때 자동으로 권한을 요청하지 않아야 합니다. 앱이 임시 권한을 갖고 있다면 사용자가 앱 사용을 멈출 때 권한이 없어집니다. 사용자가 위치를 계속 사용할 것이라고 기대되지 않는 한 권한 요청 전에 사용자가 업데이트된 위치의 필요성을 느낄 때까지 기다려야 합니다.

Important
앱은 위치 권한 프롬프트를 보여주기 위해서 앱은 포어그라운드에 있어야 합니다.

위치 서비스가 필요한 곳에서 권한을 요청하려면 requestWhenInUseAuthorization() 혹은 requestAlwaysAuthorization()를 호출하시기 바랍니다. 필요한 경우 '앱이 사용중일 때' 권한을 요청할 것입니다. requestWhenInUseAuthorization() 호출에는 제한이 없습니다. 시스템은 requestAlwaysAuthorization() 호출을 제한합니다. 오직 한 번만 요청할 수 있습니다.

권한 요청을 한 후 요청이 해결되기 전에 위치 서비스를 시작하는 것이 안전합니다. 그러나 앱 권한 상태가 CLAuthorizationStatus.authorizedAlways 혹은 CLAuthorizationStatus.authorizedWhenInUse로 변경될 때까지 위치 이벤트를 받을 수 없을 것입니다. 앱 권한 상태가 변경될 때 이를 알 수 있도록 로케이션 매니저 딜리게이트에서 locationManager(_:didChangeAuthorization:) 메소드를 구현하시기 바랍니다.

See Also


Authorization

Choosing the Location Services Authorization to Request

위치 데이터에 접근하기 위해 앱이 필요한 권한을 결정합니다.

https://developer.apple.com/documentation/corelocation/choosing_the_location_services_authorization_to_request
https://velog.io/@panther222128/Choosing-the-Location-Services-Authorization-to-Request

Responding to Changes in Authorization Status

딜리게이트 메소드에서 앱의 권한상태에 대한 변경사항을 받고 응답합니다.

https://developer.apple.com/documentation/corelocation/responding_to_changes_in_authorization_status
https://velog.io/@panther222128/Responding-to-Changes-in-Authorization-Status


post-custom-banner

0개의 댓글