공부

FCM(Firebase Cloud Messaging)

작은소행성 2024. 1. 12. 13:53

 

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

 

 

 

반응형