[node]firebase 를 이용해 푸시 알림 보내기 with node.js

yoon-bomi·2022년 9월 18일
0
post-thumbnail

🚀 프론트앤드에서 유저의 디바이스 토큰을 보내준다는 가정하에 진행한다.

firebase 공식문서에 정리가 잘 되어있어서 한 번 그대로 진행해본다.


1. 프로젝트에서 SDK 초기화를 위한 서버 키 발급받기

firebase 콘솔에서 내 프로젝트 > 설정 > 프로젝트 설정으로 들어간다.

서비스 계정 > 새 비공개 키 생성 버튼 클릭

키 생성 버튼 클릭

그러면 내 로컬에 서버 키 파일.json 이 생긴다.
이 파일은 추후 재발급이 불가능하다고 하니 잘 보관해준다. (프로젝트에 넣을 예정)


2. firebase-admin SDK 설치하기

firebase-admin 패키지를 설치해준다.

npm i firebase-admin

3. SDK 초기화

먼저 다운받은 서버 키를 프로젝트 안에 넣어준다.
나는 configs 폴더 안에 firebase-admin.json 이라는 이름으로 넣었다.

import admin from 'firebase-admin';

const serviceAccount = require('./configs/firebase-admin.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
});

새 비공개 키를 만들 때 적혀있던 코드 스니펫을 이용하여 서버 키를 import 해주고 서버 키를 이용해 credential 설정을 해준다.


4. 푸시알림 생성하기

 async sendPushNoti(email: string) {
    const targetMember = await this.memberService.findMemberByEmail(email);

    const message = {
      notification: {
        title: '테스트 제목입니다.', 
        body: '푸시알림 내용입니다.',
      },
      token: targetMember.fcmToken, // user 의 device token 을 넣어준다.
    };

    admin
      .messaging()
      .send(message)
      .then(function (response) {
        console.log('Successfully sent message: : ', response)
      })
      .catch(function (err) {
        console.log('Error Sending message!!! : ', err)
      })
  }

유저 email 으로 DB 에 저장되어있는 유저의 디바이스 토큰을 이용해 푸시 알림을 생성한다.


5. 테스트 결과

ios 기준 정상적으로 푸시 알림이 뜨는 것을 확인할 수 있다.



참고

해당 내용은 앱이 화면에 떠있지 않은 상태, 즉 백그라운드 상태일 때만 heads up 알림이 생성된다. 앱이 실행 중일 때(포그라운드) 알림을 뜨게 하려면 공식 문서에 적힌 것처럼 data 라는 key 에 정보를 담아서 프론트에 보내주고 콜백으로 해당 메세지를 받아야한다.

profile
웹 풀스택에서 백엔드로 진화중 🧚🏻‍♀️

0개의 댓글