본문 바로가기

Flutter

Firebase Cloud Messaging(FCM)

회사에서 업무중 FCM를 이용한 푸시를 구현하는 중 개념을 정리하고자한다.

 

 

클라이언트의 상태는 3가지로 나뉜다

1. 포그라운드  --> 앱이 켜져있는 상태 앱이 화면 앞단에 위치하고 있는 상태

2. 백그라운드 --> 앱이 화면이 뒤로 넘어가 있는 상태 

3. 터미네이티드 --> 앱이 완전히 종료된 상태

 

FCM의 메세지의 형태는 2가지로 나뉜다

1. 알림 메시지

2. 데이터 메시지

 

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

 

메시지의 형태가 다음과 같을 때 notification를 추가하면 알림메시지,  삭제하면 데이터 메시지이다.

 

 

단 여기서 중요한 부분은

 

알림 메시지의 경우 Flutter에서 백그라운드, 포그라운드에서 강제로 푸시가 표시된다.

 

따라서  푸시 클릭 시  화면 이동등 과 같이 푸시 커스텀을 하는 경우 데이터 메시지를 전송 할 것을 추천한다. (물론 알림메시지를 통해서도 백,포그라운드 화면 이동은 가능하다...)