박상권의 삽질블로그

[안드로이드/Android]삼성 '스마트매니저' 푸시알림 차단이슈 대응하기 본문

IT/Android-TIP (한글)

[안드로이드/Android]삼성 '스마트매니저' 푸시알림 차단이슈 대응하기

박상권 2016. 7. 22. 15:21

안드로이드 개발자들이 모여있는 오픈채팅방에 참여해보세요 .
Q&A 및 팁을 공유하는 방입니다..
오픈채팅방 참여



블로그를 Medium으로 옮겨서 운영하고 있습니다.
앞으로 새로운 글은 모두 미디엄 블로그를 통해서 올릴 예정입니다.
미디엄에서 다양하고 유익한 포스팅을 살펴보세요
미디엄 블로그 보기



스마트매니저....Smart Manager....

저는 이 아이콘만 봐도 치가 떨립니다...

이 글을 읽기전 이 아이콘만 봐도 저처럼 화가 나시는분이 계시다면 분명 저와 같은 이유일겁니다.




작년 갤럭시S6에 기본으로 '스마트매니저' 가 기본탑재되고 그 이후 다른 기종들도 업데이트하면 해당 기능이 사용되도록 변경되었습니다.

아, 물론 취지는 좋습니다.

특정앱의 과도한 데이터, 배터리 사용을 감지해서 알려주거나 불필요한 데이터나 사용자의 데이터를 한번에 정리해주는등 유용한 기능들도 있습니다.

[이 앱, 아셨어요?] 소중한 내 폰, 늘 빠릿빠릿하게! ‘스마트 매니저’





하지만 문제가 되는건 '앱 절전' 기능입니다.

'앱 절전'기능은 앱을 3일이상 한번도 사용하지 않으면 앱으로부터 오는 푸시/알람이 전혀 오지 않도록 설정됩니다.


더군다나 모든 앱이 이 기능이 기본으로 '적용'이 되어있는 상태라는 것입니다.

사용자가 필요없다고 판단해서 앱을 하나하나 '적용'하는 블랙리스트방식이 아니라, 

기본으로 다 '적용'을 해두고 사용자가 필요한 앱을 '해지'하는 화이트리스트'방식을 택한것입니다.



사용자는 내가 사용하는 앱이 이 기능이 적용되어 있다는 사실도 모른채 사용하고 있는것입니다.

심지어 사용자는 스마트매니저가 뭔지도 모르고 실행되고 있다는 사실도 모릅니다.


3일이상 앱을 사용하지 않으면 채팅앱이든, 알람앱이든, 기타 앱의 모든 알림/푸시를 아무리 보내도 사용자는 받아볼 수 없습니다.

무슨생각으로 화이트리스트 방식으로 기획을 하셨는지 삼성 스마트매니저 기획자분께 여쭤보고 싶습니다.



뭣이 중헌디!!!!!!! 뭣이 중허냐고!!!!!!










사실 좀더 정확하게 말하자면 모든앱에 이 기능이 적용되어 있지는 않습니다.


                


카카오톡, 라인, 밴드, 올레통신사 앱등 대형 통신사나 앱서비스회사들의 앱은 이 절전 기능이 기본으로 꺼져 있습니다.

심지어 일부앱은 절전 기능을 적용할수도 없게 무조건 '꺼짐' 기능밖에 못하도록 되어있습니다.

그래서 더 화가 납니다.






하지만 화가나도 어쩔수 없습니다.

저는 작은 스타트업을 운영하고 있는 불효자니까요..

그래서 이 절전기능 이슈에 대응해온 과정을 소개 합니다.













스마트 매니저 '절전'기능 대응하기





1. 우리 앱도 기본으로 '꺼짐'으로 되어있는 앱목록에 껴주세요!


이 방법이 제일 쉽습니다. 우리는 추가로 개발할게 없습니다.



하지만 이 방법은 제일 어렵습니다. 

삼성에서 우리의 앱을 저 목록에 끼워줄리가 없으니까요..

삼성 관계자 여러분, 저 목록에는 대기업 앱만 끼워주시는건가요?

이유를 알고 싶습니다.














2. 사용자 여러분! 절전모드를 사용하지마세요!


앱안에서 삼성스마트매니저가 깔려있는 사용자들에게 아래와 같은 팝업을 띄워주었습니다.

그리고 사용자가 설정으로 이동할수있도록 버튼까지 같이 보여주었습니다.



하지만 사용자는 귀찮은걸 싫어합니다.

공지사항,팝업,알림등 귀찮다고 느껴지는 것들은 읽어보지도 않고 닫아버리는 경우가 대다수입니다.


실제로 GA에서 이벤트로 찍어서 데이터를 분석해보면 팝업이 떴을때 그냥 닫아버리는 사용자가 대다수였습니다..

이 방법도 역시 임시방편일뿐 대부분의 사용자는 여전히 절전기능 이슈가 존재한다고 생각했습니다.











3. 3일에 한번 앱을 실행시키자!


이 절전기능 이슈를 해결하기위한 방법을 생각해보면 아래와 같습니다.

1. 적어도 3일에 한번 앱을 실행시킨다.

2. 뜬금없이 앱이 실행되면 사용자가 이상하게 생각하므로 사용자가 모르게 앱을 실행시켰다가 바로 닫는다.


위의 2가지만 충족시킨다면 절전기능 이슈로부터 벗어날 수 있게 됩니다.


이 방법은 '알람몬'을 운영하고 있는 '말랑스튜디오'로부터 영감을 받았습니다.

아래 설명을 읽기 귀찮으신분은 '말랑스튜디오'에서 라이브러리형태로 제공하고있는 이 기능을 사용하시면 됩니다.

https://github.com/malangstudio/AvoidSmartManager




2번의 해결방법은 쉽습니다.

별도로 투명한 액티비티를 만들고 이 액티비티를 실행했다가 바로 finish()해주면 됩니다.





그리고 이 액티비티의 Manifest에는 excludeFromrecents, taskAffinity 를 넣어주어야 합니다.

excludeFromrecents을 true로 설정하면 최근실행된 앱 리스트에 이 액티비티는 표시되지 않습니다.

taskAffinity를 별도의 이름으로 지정하지 않으면 투명한 액티비티가 실행될때 이액티비티만 실행되는것이 아니라 다른 액티비티도 함께 실행됩니다.

그래서 투명한 액티비티가 실행되었다가 종료되도 앱의 메인액티비티가 실행되버리는 현상이 발생합니다.





적어도 3일에 한번 앱을 실행시키기 위해서는 앱을 실행시키기 위한 어떤 특정 이벤트가 필요합니다.


Receiver를 두어서 어떤 이벤트가 일어날때 이를 감지하고 위에서 만든 투명한 액티비티를 실행한다면 이 문제는 해결할 수 있습니다.

그럼 어떤 이벤트에 대해서 모니터링을 걸어두어야 할까요?


잘 생각해보면 스마트폰을 사용한다면 누구나 3일에 한번은 최소한 한번 이상 '충전을 하거나', '충전을 해제하거나', '휴대폰을 재부팅시키거나' 할것입니다.

여기서 우리는 아래 이벤트를 감지하는 Receiver를 만들면 되는것 입니다.

- ACTION_POWER_CONNECTED

- ACTION_POWER_DISCONNECTED

- BOOT_COMPLETED



그렇게해서 만들어진 Manifest는 아래와 같이 정의될것입니다.





AvoidSmartManagerReceiver에서는 미리 만들어둔 투명한 액티비티를 실행했다가 바로 종료하는 코드를 작성해주면 됩니다.

이 리시버에서는 위에서 정의한 이벤트가 발생했는지를 검사하고 삼성스마트매니저의 설치여부를 알아낸뒤 투명한 액티비티를 랜덤시간이후에 실행하는 동작을 수행 합니다.









문제점


이 방법으로 문제를 해결할 수 있는것처럼 보이지만 완벽한 해결방법은 아닙니다.

우리가 의도치 않은 문제가 발생할 수 있기 때문입니다.

사용자가 게임을 하고있거나 동영상을 보고 있을때 충전기를 연결하면 갑자기 영상이나 게임이 일시정지 됩니다.

왜냐하면 순간적으로 우리의 앱이 실행되었다가 종료 되기때문에 기존에 실행되던 동영상이나 앱은 onPause()상태로 가게 될것이고 그래서 일시정지상태가 되는것입니다.


아, 물론 사용자는 우리가 설정해둔 이 기능때문에 게임이나 영상이 멈췄다는것을 알지 못합니다.

하지만 이것은 사용자에게 서비스를 제공하는 입장에서 그리고 양심적으로 문제가 생기는 부분입니다.

만약 이러한 방법으로 여러앱에서 설정해둔경우 투명한 액티비티가 엄청 여러개 실행되었다가 종료되는 상황이 발생할 것입니다.








결론


지금까지 여러 과정을 거쳐보니 이 이슈에 대한 완벽한 해결책은 아직 없는것 같습니다.

제가 생각하는 완벽한 해결책은 딱 하나 있습니다.

삼성에서 스마트매니저 절전기능을 기본으로 '해제'시킨상태로 시작하게 해주는것입니다.

사용자가 필요없다고 생각하는 앱을 직접 '적용' 할때 비로소 이 절전기능이 실행된다면 좋겠습니다.



삼성 스마트매니저 관계자 여러분,

사용자가 그리고 앱을 서비스하는 사람들이 불편한 기능이라면 이는 필요하지 않은 기능입니다.

오히려 사용자를 불편하게 만드는 기능은 없어져야 하는것이 맞을것 같습니다.





지금까지 삼성 '스마트매니저' 푸시알림 차단이슈에 대응하는 방법에 대해서 포스팅 해보았습니다.

이 글을 읽으신분들중에 다른 방법으로 이 이슈를 회피해보신 경험이 있으시다면 댓글로 정보공유 해주시면 감사하겠습니다.

감사합니다.

Comments