본문 바로가기
Firebase/Firebase Cloud Messaging

FCM(Firebase Cloud Messaging)를 사용하기 위한 Node.js 서버 구성

by holy season 2023. 4. 10.
반응형

FCM(Firebase Cloud Messaging)를 사용하기 위한 Node.js 서버 구성

Express-generator를 사용해 골격 생성하기

2023.04.08 - [Node.js/express] - Express 애플리케이션 생성기

 

Express 애플리케이션 생성기

Express 애플리케이션 생성기 애플리케이션의 골격을 신속하게 작성하려면 애플리케이션 생성도구인 express를 사용하면 된다. 설치 npm install express-generator -g 애플리케이션 생성 express --view=pug myapp

holy-season.tistory.com

express-generator를 사용해 기본적인 폴더 구조를 생성하자

다음과 같은 명령어를 이용해 myapp이라는 폴더를 생성하고 myapp 폴더로 이동해서 관련된 프로젝트 라이브러리를 다운로드한다

express myapp --view=pug
cd myapp
npm install

Firebase Admin SDK 추가

firebase를 사용하기 위해 firebase admin sdk를 설치해야 한다.

다음 명령어를 이용해서 설치를 한다.

npm install firebase-admin --save

Node.js 서버 구성

app.js에 내용을 추가한다

let firebaseRouter = require('./routes/firebase');
app.use('/firebase', firebaseRouter);

routes 폴더에 firebase.js파일을 생성하고 express.Router()를 사용해 /cloudMessaging/send로 post 요청을 보내면 메시지를 보낼 수 있도록 작성한다

firebase 폴더에는 cloudMessaging.js 파일을 생성하고 파이어베이스를 사용하기 위해 firebase-admin을 require 하고 인증을 수행하도록 작성한다.

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

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

serviceAccount에 있는 파일은 파이어베이스 콘솔 프로젝트 설정 > 서비스 계정에서 비공개 키를 생성하면 얻을 수 있다.

파이어베이스를 통해 메시지를 보내는 함수를 하나 작성한다

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

완성된 코드

 

POSTMAN으로 요청 보내기

POSTMAN을 사용해 http://localhost:3000/firebase/cloudMessaging/send로 JSON 요청을 보낸다

notification 요청

{
    "token": "cu4d7UZeRCykoW9C065Yw3:APA91bEjv3koJIbaqMxNBYSlithuX6bGGg4iwsquOA8OExy6flg9OgWnk1aCQwUsQhywKOc2-qiA76VfdMmYA8jByks0InVJm4aE3TPS9ojtblMjrRnPi4QYh7LFumZrqVT-SAXjMIMy",
    "notification":{
        "title":"hello",
        "body":"nice to meet you"
    }
}

결과

notification 메시지는 앱이 백그라운드로 동작하고 있을 때만 작업표시줄에 알림이 온다.

data 요청

{
    "token": "cu4d7UZeRCykoW9C065Yw3:APA91bEjv3koJIbaqMxNBYSlithuX6bGGg4iwsquOA8OExy6flg9OgWnk1aCQwUsQhywKOc2-qiA76VfdMmYA8jByks0InVJm4aE3TPS9ojtblMjrRnPi4QYh7LFumZrqVT-SAXjMIMy",
    "data":{
        "title":"hello",
        "body":"nice to meet you"
    }
}

결과

안드로이드 앱에 onMessageReceived를 Override하지 않아서 백그라운드와 포그라운드일 경우 아무런 동작이 없었다.

 

notification, data 요청

{
    "token": "cu4d7UZeRCykoW9C065Yw3:APA91bEjv3koJIbaqMxNBYSlithuX6bGGg4iwsquOA8OExy6flg9OgWnk1aCQwUsQhywKOc2-qiA76VfdMmYA8jByks0InVJm4aE3TPS9ojtblMjrRnPi4QYh7LFumZrqVT-SAXjMIMy",
    "notification":{
        "title":"hello",
        "body":"nice to meet you"
    },
    "data":{
        "holy":"season",
    }
}

결과

마찬가지로 안드로이드 앱에 onMessageReceived를 Override 하지 않아서 앱이 포그라운드 상태일 때는 아무런 동작이 없었지만 백그라운드일 경우에는 notfication알림이 작업표시줄에 나타났다.

 

메시지 요청 정보

FCM 푸시 알림 안드로이드 앱 구현

2023.03.15 - [Android] - Firebase Cloud Messaging(FCM) 푸시 알림 안드로이드 앱 구현

 

Firebase Cloud Messaging(FCM) 푸시 알림 안드로이드 앱 구현

Firebase Cluod Messaging (FCM) 앱 구현FCM이란?2023.03.13 - [Firebase/Firebase Cloud Messaging] - Firebase Cloud Messaging Firebase Cloud MessagingFirebase 클라우드 메시징(FCM) 메시지를 안정적으로 무료 전송할 수 있는 크로스

holy-season.tistory.com

 

반응형

'Firebase > Firebase Cloud Messaging' 카테고리의 다른 글

메시지 유형  (0) 2023.04.07
Firebase Cloud Messaging  (0) 2023.03.13