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
개발환경 설정
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