본문 바로가기
개발/Google Developers korea 블로그

안드로이드 6.0 마시멜로 런타임 권한 적용하기

by darksilber 2015. 9. 9.
반응형

출처 - http://googledevkr.blogspot.kr/

 

2015년 9월 8일 화요일

안드로이드 6.0 마시멜로 런타임 권한 적용하기

안드로이드 디바이스는 다양한 일을 합니다. 사진을 찍거나, 자신의 위치를 확인하거나, 누군가와 전화 통화를 할 수도 있습니다. 그리고이러한 기능을 활용하기 위해서는 종종 주소록, 캘린더 일정, 현재 위치 정보같이 민감한 개인 정보가 필요할 때도 있습니다. 안드로이드에서 이런 정보는 ‘권한’을 바탕으로 보호되고 있습니다. 모든 앱은 민감한 사용자 정보를 사용하기 위해서는 반드시 그에 해당하는 권한을 갖고 있어야 합니다. 

그리고 안드로이드 6.0 마시멜로에서는 사용자가 앱이 사용하는 권한을 좀 더 쉽게 이해하고 더 잘 제어할 수 있도록, 새롭게 런타임 권한 모델이 추가되었습니다. 마시멜로 버전의 가장 큰 변화 중 하나입니다. 타겟 API 23 이상으로 빌드된 앱이 안드로이드 6.0 에서 동작하는 경우, 기존처럼 앱이 설치될 때 필요한 권한을 요청하는 것이 아니라, 새로운 런타임 퍼미션 모델에 따라, 앱 실행 중에 필요한 권한을 요청해야 합니다.

000-install.png   013-sequential_single-never_ask-second.png

런타임 권한 모델을 통해 개발자 여러분은 사용자에게 왜 여러분의 앱이 특정 권한이 있어야 하는지 더 잘 설명할 수 있고, 사용자는 여러분의 앱을 더 쉽게 설치하고 활용할 수 있습니다. 사용자가 GooglePlay를 통해 앱을 설치하기 전에 앱이 요청하는 권한 목록을 확인하고 이를 수락하는 대신, 앱은 바로 설치됩니다. 더 나아가, 앱 업데이트 시 새로운 권한이 추가되는 경우에도 사용자가 이를 다시 확인해 주지 않아도 앱은 자동으로 업데이트될 것입니다. 대신, 앱 실행 중 필요한 시점에 사용자에게 권한을 요청할 수 있습니다.

디자인 가이드라인

가장 좋은 사용자 경험을 제공하기 위해서는, 올바른 순간에 권한을 요청하는 것이 중요 합니다. 구글 디자인 사이트에는 새로운 런타임권한 모델을 적용할 때, 참고하실 수 있는 유용한 UX 패턴이 정리되어 있습니다. 언제 권한을 요청해야 하는지, 그리고 왜 권한이 필요한지 어떻게 잘 설명할 수 있는지, 사용자가 권한 요청을 거부한 경우 어떻게 해야 하는지 구체적인 상황에 따른 가장 모범적인 사례를 한번 확인해 보시기 바랍니다. 

<권한의 중요도와 앱의 성격에 따라 권한을 요청하는 4가지 방법>

또 한가지, 많은 경우, 시스템이 지원하는 인텐트(Intent)를 이용하여, 별도의 권한을 요청하지 않고도 필요한 작업을 수행할 수 있습니다. 가장 대표적으로 ACTION_IMAGE_CAPTURE 인텐트를 사용하면, 직접 카메라 관련된 기능을 구현하는 대신, 사용자가 직접 본인이 가장 잘 활용하는 카메라 앱을 선택하여 사진을 캡처하고, 여러분의 앱은 그 결과를 받아 볼 수 있습니다. 여러분의 앱에 필요한 기능이나 사용 중인 권한 중 인텐트를 이용하여 대체할 수 있는 부분이 있으면 한 번 다음 내용을 살펴보시기 바랍니다. 


서포트 라이브러리

앱 내에서 런타임 권한을 요청해야 하는 경우, 개발자 여러분이 하위 호환성 걱정 없이 새로운 API를 활용할 수 있도록 서포트 라이브러리(support-v4 library, revision 23)에 관련된 API가 추가되었습니다. ContextCompat.checkSelfPermission() 메서드를 이용해 현재 앱이 특정 권한을 갖고 있는지를 확인할 수 있고, ActivtiyCompat.requestPermissions() 메서드를 사용해, 안드로이드 시스템이 사용자에게 권한 요청 대화창을 표시하도록 할 수 있습니다. 사용자가 한 번 권한을 수락한 후에도, 시스템 설정 메뉴를 통해 기존 권한을 제거할 수도 있습니다. 이 점 꼭 기억하시기 바랍니다. 

 

ActivityCompat.shouldShowRequestPermissionRationale() 메서드도 기억해 두시기 바랍니다. 이 메서드는 사용자가 이전에 권한 요청을 거부한 경우에 ‘true’ 값을 반환합니다. 이 경우, 권한 요청을 위한 대화창에는 다음과 같이 '다시 묻지 않기' 체크박스가 함께 표시됩니다.


사용자가 이를 선택하면, 이 후에 앱이 requestPermissions 메서드를 호출하더라도, 권한 요청 대화창이 표시되지 않으며, 바로 사용자가 해당 권한을 거부 할 때와 동일하게 콜백 함수가 호출 됩니다. 따라서, 이 메서드가 'true' 값을 반환하면, 여러분의 앱이 해당 권한을 요구하는 이유와 왜 그 권한이 필요한지 사용자에게 조금 더 자세한 설명을 할 필요가 있습니다. 


안드로이드 M 오픈 테스트 랩

디자인 가이드라인과 개발자 가이드 문서를 살펴보시고 안드로이드 6.0의 핵심적인 런타임 권한 모델을 한 번 적용해 보시기 바랍니다.  안드로이드 6.0 마시멜로 버전에서 직접 새로운 런타임 권한 모델을 테스트 해보고 기능을 구현할 개발자 분들을 위해 안드로이드 M 오픈 테스트 랩 행사가 마련되어 있습니다. 개발 중이거나 서비스 중인 앱과 게임이 새로운 안드로이드 M 버전에서 잘 동작하는지 직접 테스트 해보고, M 의 새로운 기능들에 관해 궁금한 점이나 적용 방법에 관해 이야기 나눌 수 있는 행사 입니다. 오픈 테스트 랩 행사는 올해 가을 마시멜로 기반의 디바이스가 정식으로 출시되기 전까지 매주 1번 꼴로 구글 캠퍼스에서 진행될 예정입니다.

바로 그 세 번째 행사가 9월 9일 진행될 예정입니다. 관심 있는 개발자 분들은 아래 링크로 참가 신청하세요.

반응형

댓글