[Firebase PUSH] Android 앱에서 background(백그라운드), foreground(포그라운드) 메시지 수신 정리
2020. 6. 11. 13:44ㆍAndroid/깨알 개념 정리
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. 알림 메시지 + 데이터 메시지 모두 포함된 경우
- 알림, 데이터 페이로드가 모두 포함된 경우 백그라운드/포그라운드 상태에 따라 앱 동작이 달라진다.
-
백그라운드 : 알림 페이로드("notification" 영역)가 앱의 작업 표시줄에 표시되며 탭 했을 경우 데이터 페이로드("data" 영역)가 런처 활동의 인텐트 부가 정보로 전송됩니다. * 런처 활동부는 <category android:name = "android.intent.category.DEFAULT"> 로 지정된다
-
포그라운드 : 앱에서 페이로드가 둘 다 제공되는 메시지 객체를 수신
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}
즉, 정리하자면 백그라운드/포그라운드 처리 상태는 다음과 같다.
앱 상태 | 알림 메시지 | 데이터 메시지 | 모두 |
포그라운드 | onMessageReceived | onMessageReceived | onMessageReceived |
백그라운드 | 작업 표시줄 | onMessageReceived | 알림: 작업 표시줄 데이터: 인텐트 부가 정보 |
참조 : 안드로이드 개발자 사이트 메시지 처리 , FCM 메시지 정보
'Android > 깨알 개념 정리' 카테고리의 다른 글
Android 개념 정리 - 1 (객체, 클래스, 자바 컬렉션, 추상 클래스, 인터페이스, 자료구조) (0) | 2022.01.31 |
---|---|
프로그래밍 정리 (SOLID 원칙, 객체지향 프로그래밍, 함수형 프로그래밍, 의존성 주입, 스레드 세이프(Thread safe), TDD) (0) | 2022.01.31 |
[Android/안드로이드] kotlin , intent 로 객체 전달 (0) | 2020.05.29 |
[Android/안드로이드] ConstraintLayout 에 대하여 (1) | 2020.05.29 |
[Android/안드로이드/Context] ApplicationContext vs ActivityContext ?!! (0) | 2020.05.29 |