Android/Firebase
FCM(Firebase Cloud Messaging)
밥굿
2024. 3. 12. 00:08
- FCM(Firebase Cloud Messaging)이란?
- 안정적인 메시지를 전송할 수 있는 교차 플랫폼 메시징 솔루션
- 모든 사용자, 그룹핑된 사용자에게 메시지 전송 가능
- 요금 정책 미적용(무료)
- FCM을 사용하는 이유
- 플랫폼 종속없이 교차하여 전송 가능(APNS, GCM 개별 개발 불필요, Android & iOS & Mobile Web 등의 다양한 플랫폼을 모두 커버)
- App Server만을 활용한다면 end point 수신자가 계속 접속 상태여야하므로 배터리와 네트워크 사용 과다 발생(클라우드 메시징 서버 거쳐서 전송하는 이유)
- FCM 메시지 유형
유형 | 전송 방식 | 데이터 구성 |
Notification Message (알림 메시지) |
|
{ "message":{ "token":"P1...", "notification":{ "title":"Portugal vs. Denmark", "body":"great match!" } } }
"message":{ "token":"P1...", "notification":{ "title":"Portugal vs. Denmark", "body":"great match!" }, "data" : { "Nick" : "Mario", "Room" : "PortugalVSDenmark" } } } |
Data Message (데이터 메시지) |
App Server 또는 신뢰가능한 환경(Firebase Adamin SDK or FCM 서버 프로토콜 이용)에서 FCM 백엔드로 메시지 전달 요청 *커스텀 키-값 쌍에 예약어를 사용하지 않도록 합니다. 예약어에는 'from', 'notification', 'message_type', 또는 'google'이나 'gcm'으로 시작하는 모든 단어가 포함됩니다. |
{ "message":{ "token":"P1...", "data":{ "Nick" : "Mario", "body" : "great match!", "Room" : "PortugalVSDenmark" } } } |
º 처리 방식
메시지 유형 | 포그라운드 | 백그라운드 |
알림 | onMessageReceived | 작업표시줄 |
데이터 | onMessageReceived | onMessageReceived |
알림(데이터 페이로드 포함) | onMessageReceived | 알림 : 작업표시줄 데이터 : 인텐트 부가 정보 |
- FCM 동작 원리
- 동작 주체
- 송신자 : App Server / 신뢰할 수 있는 환경 / Firebase Console
- FCM 백엔드 : 메시지 요청 처리 서버
- 수신자 : Mobile 기기 / Mobile Web
- 동작 주체
- 프로젝트가 다음 요구사항을 충족하는지 확인합니다.
- API 수준 16(Jelly Bean) 이상 타겟팅
- Gradle 4.1 이상 사용
- 다음 버전 요구사항을 충족하는 Jetpack(AndroidX) 사용
- com.android.tools.build:gradle v3.2.1 이상
- compileSdkVersion 28 이상
참고 : Android에서 Firebase 클라우드 메시징 클라이언트 앱 설정(공식 문서)