Node.js

[Node.js] FCM으로 푸시알림 보내는 API 작성하기

pocket.dev 2024. 7. 10. 18:29
반응형

1. serviceAccountKey 발급받기

firebase 프로젝트 콘솔 > 프로젝트 설정 > 서비스 계정 > '새 비공개 키 생성' 버튼 클릭

다운받은 json파일을 Node.js 프로젝트 내에 넣어준다.

 

 

2. FCM 연결하기

app.js

// app.js

import fcmConnection from './fcm';
fcmConnection();

 

fcm.js

위 1번에서 발급받은 json 파일을 import 해준다.

아래 코드에서는 import serviceAccount from '../firebase-admin.json'; 부분이다.

// fcm.js

import * as admin from 'firebase-admin';
import serviceAccount from '../firebase-admin.json';

const connect = async () => {
  let firebase;
  try {
    if (admin.apps.length === 0) {
      firebase = admin.initializeApp({
        credential: admin.credential.cert(serviceAccount),
      });
      console.log('Connect FCM: Initialize FCM SDK');
    } else {
      firebase = admin.app();
      console.log('Connect FCM');
    }
  } catch (error) {
    console.log('FCM connection error:: ', error.message);
  }
};

export default connect;

 

 

3. API 작성하기

import { Request, Response } from 'express';
import admin from 'firebase-admin';

const sendNotification = async (req: Request, res: Response) => {
  try {
    const { title, body, token } = req.body;
    await admin.messaging().send({
      token: token,
      android: {
        data: {
          title,
          body,
        },
      },
      apns: {
        payload: {
          aps: {
            contentAvailable: true,
            sound: 'default',
            alert: {
              title,
              body,
            },
          },
        },
      },
    });

    res.status(200).json({ message: 'Successfully sent notifications!' });
  } catch (err: any) {
    res
      .status(err.status || 500)
      .json({ message: err.message || 'Something went wrong!' });
  }
};

 

작성한 코드를 호출하는 router를 만든 후에 API를 날려보면 200 OK 응답과 함께 정상적으로 fcm이 작동된 것을 확인할 수 있다.

 

 

위에서 날린 API 호출에 대해서 모바일 기기에서 푸시 알림이 정상적으로 온 것을 확인할 수 있다.

 

 

참고: https://blog.devgenius.io/integrating-react-native-with-fcm-using-node-js-simplifying-push-notifications-b4621d5eb6c3

 


 

React Native에서 FCM으로 푸시알림을 받는 코드는 아래 글에 있다.

https://pocket-dev.tistory.com/41

 

[React Native] ios FCM으로 푸시알림 적용하기(3) - 연동 테스트

* 참고: ios는 FCM 테스트가 에뮬레이터에서 안되고, 실제 기기에서만 확인 가능하다.ios 실제 기기(아이폰)에서 프로젝트를 구동하는 방법은 다음 포스팅을 참고하면 된다: https://pocket-dev.tistory.com

pocket-dev.tistory.com