개인 광고 영역

Android 6.0인 Marshmallow부터는 SYSTEM_ALERT_WINDOW을 사용하는 경우 권한 획득이 필수가 되었습니다.

다만 Play 스토어 정책에 따라서 조금씩 다를 순 있습니다.

  • Play 스토어에서 설치하는 경우 Overlay가 true로 자동 활성화 처리됩니다.(2017. 03)

하지만 Android 6.0(Marshmallow)와 7.0(Nougat)에서 서로 다른 접근 방법을 가지고 있습니다.

개발하실 때 그리고 사용자가 사용할 때 주의해야 할 버전이 6.0입니다.

그래서 6.0(Marshmallow)에서 발생하는 예외 사항을 정리하는데 이 예외사항은 권한과 관련한 큰 문제입니다.


Overlay 때문에 권한 획득을 못한다

아래와 같은 팝업을 보신 분들이 있을 겁니다.

이 권한 설정을 변경하려면 먼저 설정 > 앱에서 화면 오버레이를 사용하지 않도록 설정합니다.

overlay


저도 처음에는 당황했습니다. 개발을 하고, 정리를 하다 보니 알게 된 사실입니다.

6.0 베타 때부터 알게 되었는데 이제야 정리합니다.


하지만 이해하지 못한다…

위의 내용으로는 이게 무슨 내용인지 이해하지 못합니다.

개발자인 제가 보아도 어려운 내용입니다.

오버레이? 그게 뭐야? 이 앱 이상해… 가 일반적인 반응일 겁니다.

앱을 지우거나 좋은 분들은 댓글도 남겨줍니다.

오버레이 땜에 권한 설정이 불가능하다고 해서 지웁니다.

결국 지우긴 합니다. 동작을 못하니 지우는 거죠.


앱을 만들어 서비스하는 입장에서는 치명타입니다. 권한 설정 자체를 못하니 앱 사용이 불가능하니깐요.

각각 제조사마다 아래와 같이 블로그를 통해 정리하는 경우도 있습니다.


오버레이?

오버레이라는 명칭 자체가 생소하기도 합니다. 영어로도 그냥 Overlay

좀 더 쉽게 설명하면 이러한 앱들이 문제가 될 수 있습니다.

  • 블루 필터를 없애주는 앱
  • 잠금 화면부터 아이콘이 노출되는 경우의 앱(잠금 화면을 포함하는 앱 등)

대부분의 사용자는 블루 필터를 사용하면서 이와 같은 현상을 겪을 겁니다.

블루 필터는 잠금화면 부터 폰의 전체를 필터 처리합니다.

그러다 보니 이런 일을 겪는 사용자가 많았을 겁니다.


오버레이를 끄러 가자

오버레이를 끄러 이동합니다.

하지만 아래와 같은 수많은 앱들이 Overlay를 사용하고 있습니다.

// 이미지 추가

그래서 뭘 꺼야 할지를 사용자는 잘 모릅니다.

그래서 일단 다 꺼버립니다. 못 끄는 앱들도 있는데 이 앱은 구글 앱들입니다.

구글 앱은 잠금 화면부터 뛰우는 경우는 없습니다.


그래서 정말 찾으면 1~2개의 앱이 문제이거나 대부분 필터 앱들이 문제입니다.

하지만 쉽게 파악하기도 힘들고, 개발자조차 이게 맞는지는 사실 잘 모릅니다.

똑같은 시행착오를 겪을 확률이 높습니다.

여하튼 블루 필터 앱이 설치된 경우라면 이를 꺼주세요.


개발 할때

Android 접근성을 통해서 이를 대체할 수 있는데 블루 라이트 앱이 이미 이렇게 하고 있습니다.

아래와 같은 설정을 해두면 callback을 받아 처리할 수 있습니다.

아직 샘플을 만들지는 않아서 추후 업데이트하겠습니다.

overlay_accessibility


마시멜로만의 문제?

아직 제가 찾았던 건 마시멜로에서만 문제가 발생하였습니다.

다행히도 6.0에서만 이러한 현상이 발생합니다. 정말 다행이죠. 7.0에서는 그러지 않으니깐요.

막히는 이유는 간단합니다. Overlay를 통해서 OS 취약점을 통해 데이터를 훔치는 것도 가능할 수도 있고, 화면 자체를 분석해서 행동 패턴을 분석하거나, 개인 정보를 훔쳐 갈 수도 있습니다.

그러니 이렇게 막는 게 좋을지도 모릅니다

하지만 여기에도 문제는 있습니다. 이미 권한을 가져간 다음에는??? 같은 것 아닌가?

여하튼 6.0에서는 위와 같은 이슈가 있습니다.


누가에서는 달라졌습니다.

다행히도 누가에서는 달라졌습니다.

SYSTEM_ALERT_WINDOW 보다 위에서 권한 획득을 요구하고, 사용자가 문제없이 허용이 가능합니다.

내부적으로 보안 취약점을 어느 정도 해결하고, 다른 방향으로 이를 해결한 것으로 보입니다.


마무리

마시멜로우에서 나타나는 오버레이(Overlay) 이슈를 정리해보았습니다.

AccessibilityService를 이용해서 다른 앱의 권한 획득 여부에 따라서 개발한 앱의 Overlay를 OFF로 변경하고, 다시 복구하는 형태로 만든다면 사용자 이슈도 없어지고, 다른 앱에 대한 문제도 사라질 수 있습니다.

블루 라이트에서는 아래와 같은 안내를 하고 있어서 좋군요.

Bluelight Filter for Eye Care

bluelight_overlay_accessibility

감사합니다.


개인 광고 영역

Tae-hwan

Android, Kotlin .. Create a content development.