목표
Firebase Cloud Messaging에 대한 내용을 이해하고 이를 활용할 수 있는 방법을 찾아본다.
* 해당 내용은 본인의 개발 공부에 있어서 여러가지 참고하며 기록했던 내용을 복기하고 이해하고자 작성한 블로그 글입니다. 같이 공부를 해나가며 Flutter라는 언어에 취미를 가지신 분 들이 개념을 잡는데 도움이 되었으면 합니다. 참고한 홈페이지 등에 대해서는 각 페이지별 하단에 명시하여 두었습니다. 수정 및 문의 사항이 있으면 알려주시길 바랍니다.
FCM
- Firebase Cloud Messaging의 약자로 무료로 메시지를 전송할 수 있는 교차플랫폼 메시징 솔루션
- 새 이메일이나 기타 데이터를 동기화 해야할때 클라이언트 앱에서 알릴 수 있음
- 채팅 메시지에도 사용할 수 있으나 메시지로 최대 4,000바이트 페이로드를 전송할 수 있는 제약이 있음
- Firebase의 서비슨느 요금 정책에 따라 이용할 수 있는 범위가 다르며 요금정책에 구분없이 FCM은 무료사용이 가능
FCM 메시징
그럼 왜 FCM 메시징이라는 것이 필요할까? 이는, Firebase에서 제시하고 있는 시나리오를 보면 확인을 할 수 있다.
우리는 보통 '알림 메시지'라는 것과 '데이터 메시지'라는 것 두개를 앱을 통해서 유저에게 전송을 한다.
- 알림메시지: 테스트, 마케팅, 사용자 재참여 유도를 위한 알림용 메시지
- 데이터메시지: 키-값 쌍으로 적절한 키를 설정하여 앱으로 데이터를 전송하는 방식 (직접적으로 메시지를 사람으로 부터 사람에게 전달하는 방식이라고 해석하면 조금 더 이해가 빠를 듯 하다.)
각각의 시나리오는 다음과 같다.
사용 시나리오 | 알림 저장 개수 | |
알림 메시지 | 앱이 백그라운드 중일때, FCM SDK가 사용자 기기에 메시지를 표시. | 다수 |
데이터 메시지 | 앱이 포그라운드 중일때, 클라이언트 앱 상에서 메시지 처리를 진행 | 1개 |
왜 그럼 FCM을 사용해서 메시지를 전송하는 걸까?
많은 이유가 있을 수 있겠으나 각 플랫폼 환경 (애플의 경우 APNS)등에서 개발을 해야하는 불편함이 계속해서 존재한다. 아, FCM이 모든 것을 대체 할 수 있는 것은 아니나 교차 플랫폼 메시지 솔루션이라는 대체안으로써 플랫폼에 특별하게 속하지 않고 Push 메시지를 User에게 발송할 수 있다는 점에서 그 매력성이 있다.
이렇게 클라우드 메시징 서버를 경유해서 실시간으로 유저들에게 메시지를 전송하면 적시적소에 필요한 알림 서비스를 받을 수 있다.
FCM에 대해서 간단하게 그 정의를 알아보았으니 이제 주요 특징들을 한번 알아보자.
FCM의 주요기능
- 알림 메시지 또는 데이터 메시지 전송: 사용자에게 표시되는 알림 메시지를 전송한다.
- 다양한 메시지 타겟팅: 단일 기기, 기기 그룹, 주제를 구독한 기기등 3가지 방법으로 클라이언트 맵에 메시지 배포
- 클라이언트 앱 메시지 전송: 기기에서 서버로 확인, 채팅, 기타 메시지 전송
가장 첫번째인 알림 메시지 또는 데이터 메시지 전송에 대해서 설명은 이미 설명은 했다. 하지만, 두번째인 메시지 타겟팅은 무슨 말일까?
타겟팅이라고 하는 것은 대상의 갯수에 따라 특정 프로젝트에 해당하도록 푸시서버 측에 요청을 할 수가 있다.
전송 방식 | 대상 수 (개) | 설명 |
단일 기기 | 1 | 하나의 기기 |
기기 그룹 | 20 | 알림키 허용 그룹 |
주제 구독 | 1,000 | 토큰이 등록되어 구독이 된 기기의 경우 |
각각의 전송 방식의 차이에 따라 구별할 수 있는 대상의 수도 달라지고 그 목적이 다른 것을 알 수 있다.
그럼 클라이언트 앱에서 메시지 전송을 한다는 것은 무엇일까? 한마디로 Firebase Connections Server로 메시지를 전송을 하는 것이다. Server에서 알림 (Push)를 받는게 아닌기기 측에 채팅 및 특정 기타 메시지를 보낸다 (다운스트림 메시징이 아니라 업스트림 메시징도 가능하다는것이다).
(계속 작성중)
참고
(1) Firebase FCM (https://firebase.google.com/docs/cloud-messaging/concept-options?hl=ko#data_messages)
(2) DH Vlog (https://donghun.dev/Firebase-Cloud-Messaging)
(3) 플랫폼 개발팀 기술 블로그 (https://team-platform.tistory.com/15)
(4) Zum Tech (https://zuminternet.github.io/FCM-PUSH/)
'Flutter' 카테고리의 다른 글
[Firebase+provider]Chp3. Chat App 채팅 페이지 만들기 (0) | 2023.05.12 |
---|---|
[Firebase+provider]Chp2. Chat App 초기 화면 만들기 (0) | 2023.05.11 |
[Firebase+provider]Chp1. Chat App 환경 준비 (0) | 2023.05.04 |
[이론] MVC, MVP 패턴 + MVVM 패턴과 비교 (0) | 2023.05.02 |
[이론] MVVM 패턴 (0) | 2023.05.02 |