일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Error
- VPN
- bootstrap
- chart.js
- node
- Airflow
- redis
- JavaScript
- codebuild
- PostgreSQL
- chartjs
- or some instances in your deployment group are experiencing problems.
- IntelliJ
- Jenkins
- SQL
- Flux
- codepipeline
- aws
- Spring
- Kafka
- aws cicd
- codedeploy error
- docker
- codedeploy
- java bigdecimal
- Python
- COALESCE
- 도커
- AWS CI/CD 구축하기
- kubeflow
- Today
- Total
Small Asteroid Blog
FCM(Firebase Cloud Messaging) 본문
FCM 사용 이유
플랫폼에 종속되지 않고 push 메시지를 사용할 수 있다.
서버를 경유해서 실시간으로 push 메시지를 받으려면 사용자는 서버에 항상 접속하고 있어야 하는데
이는 사용자의 기기의 배터리 및 네트워크 리소스를 크게 낭비한다.
FCM을 사용하면 메시징 서버를 중간에 둠으로써 낮은 배터리와 적은 네트워크 사용만으로도 메시지를 실시간으로 처리할 수 있다.
또한 iOS, Andriod, Web 에 각각 push 메시지를 보내려면 각각의 환경별로 개발해야하는데 이를 하나로 통합하는 솔루션이다.
Notification Server
- 모바일 기기에서 push 알림을 전송하는 서버
- FCM 사용
Client App
- 사용자의 모바일 기기에 설치된 앱
- push 알림을 받는 역할
Provider
- Client App 을 위한 서버
- Notification Server 에 요청을 전송해 Client App에 알림을 보냄
- push server
FCM 의 전송방식
Token 방식
- 처음 app 을 시작하면 기기마다 고유의 token을 Firebase Cloud에서 할당 받음
- 기기의 token값으로 FCM에 Push 요청함
- Firebase 에서 해당 Token 에 기기에게 알림을 보냄
Topic 방식
- 모바일에서 원하는 topic을 Firebase에 등록
- 서버에서 Firebase에 해당하는 topic에 Push 전송함
- Firebase에서는 해당 topic을 등록한 기기에게 알림을 보냄
클라이언트는 token, topic 값을 계속 등록 및 갱신해야하며
서버는 해당 사용자의 token, topic을 저장해야함.
FCM 푸시 대상 종류
단일 (token)
- 특정 기기의 token 값을 사용해 해당 기기에만 알림 전송
여러개(topic)
- 특정 topic에 해당하는 여러 기기에 메시지를 보내는 방법
- 속도보단 처리량 위주로 최적화 되어 있는 기능
- Firebase Admin SDK를 사용하면 서버 측에서 기본적인 토픽 관리 작업을 수행할 수 있음
서버에 sdk 추가
https://firebase.google.com/docs/admin/setup?hl=ko
서버에 Firebase Admin SDK 추가
Admin SDK는 권한이 있는 환경에서 Firebase와 상호작용할 수 있는 서버 라이브러리 집합입니다.
firebase.google.com
개발환경 설정
https://firebase.google.com/docs/firestore/quickstart?hl=ko#java
firebase admin java sdk github
https://github.com/firebase/firebase-admin-java?tab=readme-ov-file
'백엔드' 카테고리의 다른 글
동기 vs 비동기, 블로킹 vs 논블로킹 - 백엔드 & AI 개발에서의 활용 (1) | 2025.03.08 |
---|---|
PKCS#5 패딩과 PKCS#7 패딩의 특징과 차이점 (0) | 2024.07.18 |
[스프레드 시트] 구글 스프레드 시트에서 다른 시트에 있는 데이터를 원하는 데이터 추출하기 (모두 찾기/전체 검색) (0) | 2023.12.04 |
[자료구조] B-Tree, B+Tree (0) | 2023.08.20 |
[웨비나] Bootiful Spring in Summer with Josh Long (0) | 2023.06.26 |