안드로이드 알림 버그 수정

최민길(Gale)·2023년 1월 1일
1

안녕하세요 오늘은 최근 발생한 안드로이드 알림 미발송 문제를 해결한 내용을 공유하려고 합니다ㅎㅎ

투다는 투다 활동에 대해 알림을 받아볼 수 있습니다. 하지만 최근 들어 안드로이드 버전에서 알림이 제대로 발송되지 않는다는 문의가 늘어 이 부분을 다시 한 번 살펴보았습니다.

FCM 발송 API를 이용해서 알림 테스트를 진행해봤습니다. 테스트 기기에서 발급받은 FCM 토큰을 바디에 추가하여 포스트맨을 통해 API 발송 테스트를 진행하였고 그 결과 테스트 기기에 알림 발송이 잘 진행되는 것을 확인했습니다.

하지만 테스트 기기에 투다를 설치 후 알림 발송 테스트를 진행했을 때는 정상적으로 알림이 발송되지 않았습니다. 따라서 어떤 부분이 알림 발송 문제의 원인인지를 지속적으로 확인해보았습니다.

원인 파악을 위해서 FCM 공식 문서를 확인해보았습니다. 문서에 따르면 포그라운드 환경에서는 FirebaseMessagingService 객체 내의 onMessageReceived 메서드에서 푸시 알림을 받아서 처리하는 반면, 백그라운드 환경에서는 Notification 키의 경우 운영 체제의 작업 표시줄의 알림 영역인 시스템 트레이에서, Data 키의 경우 onMessageReceived 메서드에서 알림을 처리하는 것을 확인할 수 있습니다.

하지만 투다의 알림 서버의 경우 Notification과 Data 키를 모두 사용하여 알림을 전송하였고, 위의 문서에 따르면 포그라운드 환경에서는 onMessageReceived 메서드에서 알림 데이터를 넘겨받아 정상적으로 작동되는 한편, 백그라운드 환경에서는 Notification 키는 시스템 트레이에서, 그리고 Data 키의 경우 Notification 키와 같이 전송될 경우 별도 인텐트에서 처리되기 때문에 알림이 발송되지 않았습니다.

따라서 이 문제를 해결하기 위해 알림 서버의 알림 발송 부분과 onMessageReceived 메서드를 수정하였습니다. 우선 알림 서버에서 FCM 발송 시 안드로이드 기기에 보내는 알림의 경우 Notification 키에 넣을 정보를 Data 키로 옮겨서 발송을 진행했습니다.

onMessageReceived 메서드의 경우 기존처럼 Notification 키에서 데이터를 받아오지 않고 Data 키에서 데이터를 받아오도록 수정하였습니다.

수정된 파일을 통해 테스트한 결과 정상 동작하는 것을 확인하였고, 이 버전으로 새롭게 출시하여 관련 오류를 해결하였습니다. 다음에 새롭게 발견되는 오류가 있으면 해결하여 포스팅하겠습니다. 긴 글 읽어주셔서 감사합니다ㅎㅎ

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글