Firebase Cloud Messaging : Firebase에서 제공하는 푸시 알림 서비스
FCM의 하는일 : 중앙에서 메세지를 받아 연결된 디바이스에게 푸시 알림 제공하는 역할
Android : FCM이 푸시 알림의 필수 요소
IOS : 플랫폼 통합 지원
즉 FCM하나로 두 플랫폼 모두 커버 -> 푸시 알림의 사실상 표준
1. 백엔드 서버 -> FCM 서버로 HTTP 요청을 보냄
2. FCM -> 토큰에 해당하는 기기에 알림 전달
3. onReceived와 같은 메서드에서 받아서 처리하는 구조
1. 앱 설치 시 FCM이 고유한 token 발급
2. FCM 서버 DB에 token 저장
3. FCM이 DB에서 token을 찾아 해당 기기로 전달
- 수많은 기기 중 정확한 기기에만 푸시 알림을 전송할 수 있음
| Token 방식 | Topic 방식 |
|---|---|
| 전달 대상 한명 | 전달 대상 여러명 |
| 서버는 FCM에게 토큰 값을 전달한다 | 서버는 FCM에게 Topic 이름을 전달한다 |
1. 각 기기의 토큰이 배달의 민족 서버 DB에 저장되어있음
2. 각 유저마다 다른 알림 필요
- 특정 토큰과 알림 내용을 FCM에게 전달 (userA : 조리시작 / userB : 배달시작 / ...)
- FCM이 DB에서 해당 토큰을 찾아 기기로 전송 (개별 전송 token 방식)
topicList 라는 컬럼 존재| id | token | topicList |
|---|---|---|
| 1 | 1Ps... | promotion |
| 2 | 2xY... | .. |
Token을 넘겨주느냐 혹은 Topic을 넘겨주느냐의 차이
나머지 처리는 FCM이 알아서
Token 방식
firebaseMessaging.send(...)
.setToken(request.token())
.build());
firebaseMessaging.send(...)
.setTopic(request.topic())
.build());