안드로이드 알림 지연 현상이 있습니다. 왜 그런건가요?

안드로이드를 사용하는 사용자들 중 공통된 문제점을 제기하는 경우가 있습니다. 바로 알림이 늦게 온다는 것이죠. 혹여나 배터리 최적화가 문제일까 봐 배터리 최적화도 꺼주고 백그라운드 데이터도 허용해 주었는데 여전히 알림이 늦게 온다는 것입니다. 결론적으로 이 현상의 주범은 구글입니다. 안드로이드 OS 9 이상부터 일명 "잠자기" 로직이 추가되면서 불편함이 가중됐던 것입니다.

 

안드로이드 적폐 기능 Doze & Stanby Mode

과거의 안드로이드 제품들의 주된 문제점은 배터리 소모였습니다. Apple 아이폰에 비해 배터리 소모 속도가 처참하게 빨랐던 것이었죠. 구글도 이를 인지하고 있었습니다. 구글은 결국 문제를 해결하기 위해 한 가지 기능을 넣게 되는데 일명 "Doze Mode" 입니다. 도즈 모드의 상세한 개발자 문서를 보고 싶으시다면 아래의 링크를 눌러 개발자 문서를 보실 수 있습니다.

 

Doze Mode Developer Documents

 

잠자기 및 앱 대기에 맞게 최적화  |  App quality  |  Android Developers

앱에서 Android 6.0의 절전 기능을 테스트하고 최적화합니다.

developer.android.com

안드로이드에는 기기가 전원에 연결되어 있지 않을 때 배터리 수명을 연장하는 두 가지 절전 기능이 있습니다. 하나는 "Doze Mode" 또 다른 하나는 "App Stanby Mode"입니다.

 

"도즈 모드"는 장치가 평평한 상태로 오랫동안 움직이지 않거나 충전되지 않을 때, 로직이 발동됩니다. 이 모드가 활성화되면 다음과 같은 제약이 따릅니다.

 

- 네트워크 접근 제한

- 작업 스케줄링 지연

- 푸시 알림 제한

- GPS 및 고전력 센서의 사용 제한

 

"앱 스탠바이 모드"는 사용자가 일정 기간 동안 특정 앱을 사용하지 않으면 해당 앱의 백그라운드 활동을 제한하는 기능입니다. 이 모드가 활성화되면 다음과 같은 제약이 따릅니다.

 

- 네트워크 접근 제한

- 백그라운드 작업 제한

- 푸시 알림 제한

 

"도즈모드"와 "앱 스탠바이 모드"의 차이점은 도즈 모드는 항상 상시로 작동된다는 점이고 스탠바이 모드는 그저 특정 앱을 사용하지 않으면 발동되는 조건입니다.

 

현재 안드로이드 이용자들이 겪고 있는 알림 지연 문제는 "도즈 모드"와 연관이 깊습니다. 도즈 모드에선 장치가 주기적으로 짧은 시간 동안 깨어나 네트워크 작업을 수행하는데 이를 "Maintenance Window"라 부릅니다. 이 주기 외에는 다시 꿈나라로 들어가 네트워크 접근이 제한됩니다. 따라서 푸시 알림을 받는데 시간이 10 ~ 15분 정도 지연이 되는 이유입니다.

 

도즈모드 개요도
도즈모드 개요도

사진을 보고 설명드리자면 초록색 막대가 기기가 잠자고 있는 상태이고 굵은 빨간색 막대가 기기가 잠깐 일어나서 네트워크 활동을 하고 있다는 장면입니다.

 

시간이 지날수록 잠자기 주기가 길어진다는 구글 개발자 공식 문서 설명
시간이 지날수록 잠자기 주기가 길어진다는 구글 개발자 공식 문서 설명

도즈모드의 웃긴 특징이 있는데 시간이 지남에 따라 기기의 잠자기 주기가 점점 길어진다는 것입니다. 사진을 보면 아시겠지만 처음에 잠깐 깨어났다가(가장 첫 번째 굵은 막대기) 두 번째 Maintenance Window에선 도즈모드 주기가 조금 길어졌고 마지막 세 번째 Maintenance Window에선 도즈모드 주기가 더 길어진 것을 볼 수 있습니다.

 

예를 들면 A라는 앱이 도즈모드 영향으로 처음에 10분 알림 지연이 있었고 사용자가 휴대폰을 켜지 않으면 그다음 알림은 20분 뒤에 울리게 되고 계속 그대로 두면 30분 뒤에 알림이 울리게 된다는 뜻입니다.

 

즉, 기기가 판단했을 때, 첫 알림이 울리고 휴대폰을 켜지 않으면 기기는 주인이 잠자고 있다고 생각해 그 다음 알림은 더 늦게 울리도록 판단을 하는 겁니다. 구글은 이러한 방법으로 안드로이드 제품들의 배터리를 절약하도록 설계한 것입니다.

 

그리고 아직까지 논란이 되고 있는 것은 사용자가 직접 특정 앱의 배터리 최적화 기능을 OFF 하였음에도 도즈모드가 적용된다는 것입니다. 아까도 말씀드렸지만 도즈모드는 항상 상시로 작동되며 운영체제단에서 작동되는 방식이므로 개별적으로 앱 배터리 최적화를 꺼도 소용이 없습니다.

 

도즈모드 레딧 글도즈모드 스택 오버 플로우 글
도즈모드로 푸시 알림이 지연이 되고 있다는 여러 커뮤니티 글
구글 픽셀 제품에서도 알림 지연으로 문제를 제기하는 한 사용자
구글 픽셀 제품에서도 알림 지연으로 문제를 제기하는 한 사용자

 

안드로이드 개발자들의 우선 대응 순위

당연히 구글도 도즈모드가 얼마나 불편한 기능인지 알고 있습니다. 그래서 구글은 개발자 문서에 하나의 조건을 걸어놨는데 만약에 도즈모드로 인해서 피해를 입을 수 있는 앱은 개발자가 직접 도즈모드를 무시하도록 소프트웨어를 수정하라는 것입니다.

 

개발자들이 절전 모드에 대응을 잊지 말라고 신신당부 하는 이유가 괜히 있는게 아닙니다. 절전 모드를 무시할 수 있는 방법은 2가지 방법이 있습니다. 하나는 "허용되는 예외 사용 사례(화이트리스트)" 다른 하나는 "FCM 높은 우선순위 메세지"가 있습니다.

 

FCM 높은 우선순위 메세지 설명FCM을 이용해 도즈모드 대응
FCM을 이용해 도즈모드 대응

구글은 Firebase 클라우드 메시징 (FCM)을 적극적으로 이용하라고 개발자 문서에서도 권장하고 있습니다. 클라우드에서 기기로 푸시하는 서비스로 실시간 푸시 메세지가 필요한 모든 앱은 이 연결을 통해 공유할 수 있습니다. 심지어 무료입니다.

 

여러 앱이 자체적인 별도의 영구 연결을 유지할 필요가 없어 배터리 소모를 크게 최적화한다는 의도입니다. FCM은 절전 모드를 유지시킴과 동시에 앱 알림을 받을 수 있도록 설계 되어 있습니다. 덕분에 배터리도 절약하고 절전 모드임에도 푸시 알림을 받을 수 있습니다. 구글의 가장 이상적인 절전 모드 대응 방식입니다.

 

높은 우선순위 메세지

 

FCM 메시지 정보  |  Firebase 클라우드 메시징

Google I/O 2023에서 Firebase의 주요 소식을 확인하세요. 자세히 알아보기 의견 보내기 FCM 메시지 정보 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Firebase 클라

firebase.google.com

또 다른 방법으로는 " 허용되는 예외 사용 사례(화이트리스트)"가 있습니다. 구글은 예외적으로 허용이 가능한 대표적인 앱을 표로 정리해 놓았는데 허용되는 예외 사용 사례는 다음과 같습니다.

 

- 채팅 또는 통화, VOIP 앱

- 위급 정보 앱

- 작업 자동화 앱

- 주변기기 호환 앱

 

허용되는 예외 사용 사례
허용되는 예외 사용 사례

위 표에 언급된 유형의 앱은 절전 모드가 무시될 수 있도록 개발자가 요청할 수 있습니다. 이를 적용하면 사용자의 휴대폰에 "배터리 최적화를 무시하시겠습니까?"라는 문구를 띄워줍니다.

 

그러나, 앱의 핵심 기능에 악영향을 미치는 경우가 아니면 Android 6.0 이상에서 앱이 절전 기능에서 직접 제외하도록 요청하는 것을 금지하고 있습니다. Google Play 정책이며 이를 어길 시, 구글 플레이 스토어에 앱 업로드가 거절될 수 있습니다.

 

배터리 절전 모드 무시 요청 알림
배터리 절전 모드 무시 요청 알림
Google Play 정책
Google Play 정책

 

#안드로이드, #Android, #Doze Mode, #도즈모드, #안드로이드 알림, #안드로이드 알림 지연, #안드로이드 알림 늦게 옴

Designed by JB FACTORY