일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- WebView
- scope function
- 영어독립365
- OkHttp Interceptor
- MVP Architecture
- 습관만들기
- 안드로이드
- Android ProgressBar
- Android Jetpack
- Android 12 대응
- Kotlin FCM
- 안드로이드 카카오 로그인
- Java
- 안드로이드 갤러리 접근
- 66챌린지
- DataBinding
- Android Navigation
- 안드로이드 fcm
- Android ViewPager2
- Android Interceptor
- Android WebView
- Kotlin
- 프로그래머스 알고리즘
- 알고리즘 자바
- 영어공부
- 카카오 알고리즘
- Android 12
- Android DataBinding
- android recyclerview
- Android
- Today
- Total
Developer Geek
Android FCM and Message Types 본문
Android FCM 프로젝트 셋팅
Android FCM 기본 예제
Android FCM 클릭 이벤트
들어가며
Android App 개발 프로젝트를 진행하는 중, Notification 개발을 맡았다. 앱이 Foreground
일 때는 내가 원하대로 Notification 클릭 이벤트(특정 화면 호출|이동)가 동작했지만, 앱의 상태가 Background
인 경우에는 Notification은 잘 왔지만 클릭 이벤트가 동작하지 않았다. Foreground
상태를 처리하는 예제는 무수히 많았지만, Background
에서 이벤트처리 관련해서는 정보 찾는데 어려웠어서 Background
에서의 Notifiaction 클릭 이벤트 처리를 위한 기본 배경 지식을 정리하려 한다.
FCM 이란
Firebase Cloud Messaging (FCM)은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다.
Message Types
FCM에서는 2가지 타입의 메시지가 있다.
- Notification Message:
display message
라고도 불리는데, FCM SDK 에서 자동으로 관리된다. - Data Message: Client App 에서 따로 관리된다.
Notification Message
는 미리 정의된 user-visible
키 셋을 갖는다. 반면에 Data Message
는 사용자가 정의한 custom key-value
를 갖는다. Notification Message
는 선택적인 data payload
를 갖을 수 있다.
Notification Message
프로그래밍적으로 Notification Message를 보내기 위해서는 Admin SDK 또는 FCM protocols를 이용해야 하는데, notification에 미리 정의된 key-value
옵션을 필수적으로 설정해준 후 보내야한다.
예를 들면 아래 JSON 포맷의 코드는 Notifcation Message의 예시이다. 아래와 같이 알림을 보내게 되면 앱의 사용자는 타이틀에는 Portugal vs. Denmark
가 내용으로는 great match!
가 전달된다.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
앱의 상태가 Foreground
이라면 onMessageReceived()
메서드에서 데이터 값들을 커스텀 하여 알림을 만들 수도 있다.
하지만 Background
라면 onMessageReceived()
메서드가 호출되지 않고 안드로이드에서 기본적으로 알림을 만든다.
Data Message
원하는 custom key-value
옵션을 설정하여 Client App에 Data를 전달한다.
예를 들면 아래 JSON 포맷의 코드는 Data Message의 예시이다. 여기서 정보는 공통 data
키에 캡슐화되어 있으며 Client App은 데이터를 파싱해서 사용해야 한다.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
앱의 상태(Foreground
or Background
)와 상관 없이 onMessageReceived()
메서드가 호출된다. Data를 받고 RemoteMessage.data["key"]
처럼 value 값을 파싱해서 쓸 수 있다.
참고 블로그(문서)
[Android]FCM Background Push
Firebase FCM Notification Message Documents
질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com
'안드로이드 > Service' 카테고리의 다른 글
[Android] ForegroundService Basic Sample (1) | 2022.09.26 |
---|---|
Android Push 알림 + Background vs Foreground in Kotlin (0) | 2022.06.18 |
Android 배송추적 WebView in Kotlin (0) | 2022.05.01 |
Android 복수 사진 첨부 From Activity In Kotlin (0) | 2022.04.28 |
Android 사진 첨부 From Activity In Kotlin (0) | 2022.04.27 |