ReactNative: 6.0 Marshmallow 이상 버전에서 퍼미션 에러로 죽는 이슈 해결


(글 작성한 시점의 최신 ReactNative ver: 0.40)

일단 ReactNative는 아직까지 Marshmallow의 Permission 관련 대응이 되지 않고 있다. 그래서 이 부분에 대한 개발자들의 예외처리가 필요한데, 일단 다른 기능을 사용하지 않아도 기본적으로 DevSettingMode에서부터 '다른 앱 위에 그리기 권한'이 필요하다. (DevSettingMode가 뭔지 모르거나 혹은 설정해준적 없는 경우, default가 '사용'이기 때문에 대부분 사용하고 있는 경우이다.)

일단 6.0 이상의 단말의 Permission 획득에 관한 내용은 Android Developer 문서 참고


Permission 예외처리 로직이 없는 경우 권한 획득에 실패하여 당연히 앱이 죽을 것이다. 특히나 이 '다른 앱 위에 그리기 권한' 같은 경우에는 Dangerous Permission이 아니기 때문에, 앱 설정에서 해줄 수 있는 부분이 아니여서 설정 화면을 직접 띄워줘야한다. (같은 맥락으로 onActivityResult() 에서의 Granted 체크가 어렵다.)

로직은 간단하다 :

showReactView() 메소드에서 ReactNative 화면을 호출하든 ReactRootView를 통해 view를 이식하든 자유롭게 코딩하면 된다.

이렇게 하면 6.0 이상의 버전에서는 해당 요청시 '다른 앱 위에 그리기 권한'을 허용하는 화면이 뜬다.

댓글

이 블로그의 인기 게시물

5년차의 슬럼프

10대 여고생이 만난 프로그래밍 - 마이크로소프트웨어 31주년 컨퍼런스

About Me