그리고 안드로이드 6.0 마시멜로에서는 사용자가 앱이 사용하는 권한을 좀 더 쉽게 이해하고 더 잘 제어할 수 있도록, 새롭게 런타임 권한 모델이 추가되었습니다. 마시멜로 버전의 가장 큰 변화 중 하나입니다. 타겟 API 23 이상으로 빌드된 앱이 안드로이드 6.0 에서 동작하는 경우, 기존처럼 앱이 설치될 때 필요한 권한을 요청하는 것이 아니라, 새로운 런타임 퍼미션 모델에 따라, 앱 실행 중에 필요한 권한을 요청해야 합니다.
런타임 권한 모델을 통해 개발자 여러분은 사용자에게 왜 여러분의 앱이 특정 권한이 있어야 하는지 더 잘 설명할 수 있고, 사용자는 여러분의 앱을 더 쉽게 설치하고 활용할 수 있습니다. 사용자가 GooglePlay를 통해 앱을 설치하기 전에 앱이 요청하는 권한 목록을 확인하고 이를 수락하는 대신, 앱은 바로 설치됩니다. 더 나아가, 앱 업데이트 시 새로운 권한이 추가되는 경우에도 사용자가 이를 다시 확인해 주지 않아도 앱은 자동으로 업데이트될 것입니다. 대신, 앱 실행 중 필요한 시점에 사용자에게 권한을 요청할 수 있습니다.
디자인 가이드라인
가장 좋은 사용자 경험을 제공하기 위해서는, 올바른 순간에 권한을 요청하는 것이 중요 합니다. 구글 디자인 사이트에는 새로운 런타임권한 모델을 적용할 때, 참고하실 수 있는 유용한 UX 패턴이 정리되어 있습니다. 언제 권한을 요청해야 하는지, 그리고 왜 권한이 필요한지 어떻게 잘 설명할 수 있는지, 사용자가 권한 요청을 거부한 경우 어떻게 해야 하는지 구체적인 상황에 따른 가장 모범적인 사례를 한번 확인해 보시기 바랍니다.
<권한의 중요도와 앱의 성격에 따라 권한을 요청하는 4가지 방법>
또 한가지, 많은 경우, 시스템이 지원하는 인텐트(Intent)를 이용하여, 별도의 권한을 요청하지 않고도 필요한 작업을 수행할 수 있습니다. 가장 대표적으로 ACTION_IMAGE_CAPTURE 인텐트를 사용하면, 직접 카메라 관련된 기능을 구현하는 대신, 사용자가 직접 본인이 가장 잘 활용하는 카메라 앱을 선택하여 사진을 캡처하고, 여러분의 앱은 그 결과를 받아 볼 수 있습니다. 여러분의 앱에 필요한 기능이나 사용 중인 권한 중 인텐트를 이용하여 대체할 수 있는 부분이 있으면 한 번 다음 내용을 살펴보시기 바랍니다.
서포트 라이브러리
사용자가 이를 선택하면, 이 후에 앱이 requestPermissions 메서드를 호출하더라도, 권한 요청 대화창이 표시되지 않으며, 바로 사용자가 해당 권한을 거부 할 때와 동일하게 콜백 함수가 호출 됩니다. 따라서, 이 메서드가 'true' 값을 반환하면, 여러분의 앱이 해당 권한을 요구하는 이유와 왜 그 권한이 필요한지 사용자에게 조금 더 자세한 설명을 할 필요가 있습니다.
디자인 가이드라인과 개발자 가이드 문서를 살펴보시고 안드로이드 6.0의 핵심적인 런타임 권한 모델을 한 번 적용해 보시기 바랍니다. 안드로이드 6.0 마시멜로 버전에서 직접 새로운 런타임 권한 모델을 테스트 해보고 기능을 구현할 개발자 분들을 위해 안드로이드 M 오픈 테스트 랩 행사가 마련되어 있습니다. 개발 중이거나 서비스 중인 앱과 게임이 새로운 안드로이드 M 버전에서 잘 동작하는지 직접 테스트 해보고, M 의 새로운 기능들에 관해 궁금한 점이나 적용 방법에 관해 이야기 나눌 수 있는 행사 입니다. 오픈 테스트 랩 행사는 올해 가을 마시멜로 기반의 디바이스가 정식으로 출시되기 전까지 매주 1번 꼴로 구글 캠퍼스에서 진행될 예정입니다.
바로 그 세 번째 행사가 9월 9일 진행될 예정입니다. 관심 있는 개발자 분들은 아래 링크로 참가 신청하세요.