본문 바로가기

프로그래밍/안드로이드[Android]

[Firebase] 안드로이드 백그라운드 포그라운드 동시 처리 방법.



웹서버에서 FIrebase를 이용하여 안드로이드로 푸시 메시지를 보낼 때 백그라운드와 포그라운드가 각각 별도로 핸들링을 해야 합니다.

 

우선 클라우드 메시징이 안되신 분들은 아래의 글을 참고해주세요.

 

 

[Firebase] 스프링 웹서버에서 안드로이드에 푸시 메시지 보내기[FCM를 이용]

스프링 웹서버에서 Firebase를 이용하여 안드로이드로 푸시 메시지를 보내는 방법에 대해 알려드리고자 합니다. 위와 같이 웹서버에서 원하는 내용을 안드로이드에 푸시를 보내는 방법을 소개해 드리겠습니다. 또..

baessi.tistory.com

 

자 그리고 앱 실행 중에도 푸시 알림을 받기 위해 MyFirebaseMessagingService를 구현하셨을 겁니다.

 

이를 구현하면서 백그라운드는 별도로 동작하고 포그라운드 상태에서만 MyFirebaseMessagingService가 호출이 됩니다.

 

아래는 웹서버(저는 스프링 프레임 워크입니다-자바 쪽)에서 메시지를 보내는 소스입니다.

 

해결 방법으로는 setNotification를 사용하지 않으면 됩니다.

 

대신 서버에서 title과 Body를 보내야 한다면 putData를 이용해서 보내시면 됩니다.

 

자 그리고 안드로이드에서 다음과 같이 데이터를 받는 것을 확인할 수 있습니다.

 

 

기존의 Firebase에서 제공하는 소스를 보시면(없으시면 아래의 코드를 사용하세요)

 

 
 Log.d(TAG, "Message data payload: " + remoteMessage.getData());
     

 

그리고 Logcat을 확인해보면 Json 형식으로 데이터가 확인이 됩니다.

 

물론 백그라운드 상태, 포그라운드 상태 두 경우에서 다 확인하실 수 있습니다.

 

 

이 데이터를 이용하여 sendNotification에서 set 하는 부분에서 수정해주시면 되겠죠??

 

이상입니다.