이미지 출처 : _im_ssu.log
FCM(Firebase Cloud Messaging)은 Google Firebase에서 제공하는 무료 클라우드 메세징 서비스로,
개발자가 Android, iOS, 웹애플리케이션 등에 푸시 알림을 전송 할 수 있게 해준다.
FCM을 이용해 메세지를 보내는 과정은 다음과 같다!
(Firebase 프로젝트가 생성 되어 있다는 가정하에!)
클라이언트 앱에서 FCM 서버와 통신하기 위한 FCM 등록 토큰을 획득한다.
획득한 토큰을 서버로 전송 해 DB에 저장한다.
클라이언트 앱으로 메세지를 전송하기 위해 서버에서 메세지 데이터 + 토큰을 보내 전송을 요청한다.
클라우드는 요청받은 메세지를 토큰에 해당하는 단말기에 전송한다.
여기서, Front에서 토큰을 받아서 DB에 저장하는 과정은 API로 처리가 완료 된 상태이므로 나는 이 TOKEN을 꺼내서 PUSH 메세지를 보내는 과정만 정리 해 두려고 한다.
일단 firebase-admin 패키지를 다운 받아준담
npm install firebase-admin --save
이제 Service Account 파일을 다운받아줘야 한다!
Service Account 파일은 Firebase Admin SDK를 사용하여 서버 측에서 FCM과 같은 Firebase 서비스를 이용할 때 필요합니다. 일반적으로 서버에서 Firebase API에 직접 접근할 때 사용하는 인증 방식입니다.
Service Account 파일은 백엔드에서 Firebase Admin SDK를 사용할때 필요하다고 한당.
나도 Node.js 에서 PUSH 기능을 구현하고 있기 때문에 해당 파일을 받아서 연결 해 줬다~
(클라이언트측에서 PUSH를 보낼 경우 인증 불필요,
Firebase SDK가 자동 인증을 처리 해 준다고 한다.)
해당 파일은 Firebase 콘솔 접속 후,
[프로젝트 설정] > [서비스 계정] > [새 비공개 키 생성]
하면 키 생성이 가능하다.
해당 키는 한번만 받을 수 있다고 하니 잘 보관 해 두시길
이제 해당 파일을 본인 프로젝트에 넣어둔뒤,
const admin = require('firebase-admin');
// 서비스 계정 키 파일 경로 추가
const serviceAccount = require('../firebase-admin.json');
// Firebase Admin SDK 초기화 추가
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
이렇게 선언 해 주면 PUSH 메세지 보낼 준비는 완료
이제 메세지를 보내주는 부분을 구현 해 주면 된다.
const message = {
notification: {
title: 'FCM Test',
body: 'This is a test message'
},
token: 'FCM_DEVICE_TOKEN'
};
admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
이런식으로 title과 body 메세지를 정해 준 뒤,
PUSH 메세지를 받을 회원의 token 정보를 넣어주면 된닷
혹시 해당 PUSH를 클릭했을때, 앱의 특정 경로로 이동 해야 할 경우
data
를 추가로 선언 해 주면 된다 ! ㅎ.ㅎ