[Firebase PUSH] Android 앱에서 background(백그라운드), foreground(포그라운드) 메시지 수신 정리

2020. 6. 11. 13:44Android/깨알 개념 정리

Firebase 알림의 동작은 수신하는 앱의 포그라운드/백그라운드 상태에 따라 달라집니다.

 

따라서 각각 어떻게 처리해야 하는지 정리해보겠습니다. 

 

수신되는 메시지 유형

1. 알림 메시지 

- 종종 '표시 메시지'로 간주됩니다. FCM SDK에서 자동으로 처리합니다.

- 알림 메시지에는 사용자에게 표시되는 키 모음이 사전 정의되어 있습니다 

- 백그라운드의 경우  notification.title, notification.body 가 기기 작업 표시줄에 나타나며, 탭 했을 경우 앱 런처가 열립니다. 

 

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

 

 

2. 데이터 메시지   

- 클라이언트 앱에서 처리합니다.

- 커스텀 키- 값 쌍으로 적절한 티를 설정하여 클라이언트 앱으로 데이터 페이로드를 보냅니다. 

- 데이터 메시지만 있을 경우에는 백그라운드, 포그라운드 모두 onMessageReceived에서 처리하므로 아이콘, 배경화면을 동시 지정할 수 있다. 

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

 

3. 알림 메시지 + 데이터 메시지 모두 포함된 경우 

- 알림, 데이터 페이로드가 모두 포함된 경우 백그라운드/포그라운드 상태에 따라 앱 동작이 달라진다. 

  1. 백그라운드 : 알림 페이로드("notification" 영역)가 앱의 작업 표시줄에 표시되며 탭 했을 경우 데이터 페이로드("data" 영역)가 런처 활동의 인텐트 부가 정보로 전송됩니다. * 런처 활동부는 <category android:name = "android.intent.category.DEFAULT"> 로 지정된다 

  2. 포그라운드 : 앱에서 페이로드가 둘 다 제공되는 메시지 객체를 수신

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

 

즉, 정리하자면 백그라운드/포그라운드 처리 상태는 다음과 같다. 

앱 상태 알림 메시지 데이터 메시지 모두 
포그라운드 onMessageReceived onMessageReceived onMessageReceived
백그라운드 작업 표시줄  onMessageReceived 알림: 작업 표시줄
데이터: 인텐트 부가 정보

 

 

 

참조 : 안드로이드 개발자 사이트 메시지 처리 , FCM 메시지 정보