[Node.js] FCM(Firebase Cloud Messaging)토큰으로 백그라운드 앱에...

[Node.js] FCM(Firebase Cloud Messaging)토큰으로 백그라운드 앱에...

반응형

B라는 사람한테 어떠한 메시지를 전달하는 두 가지 경우를 먼저 생각해보면

1. A가 B에게 개인적인 메시지를 전달하기 위해서, 앱을 사용하고, 서비스를 하는 회사의 서버를 거쳐서 B에게 가는 방법( A-> 서버 -> B)

2. 앱에서 사용자에게 무엇인가 홍보하기 위해서, 회사의 서버에서 B에게 메시지를 보내는 방법(서버 -> B)

이 있습니다.

하지만 메시지를 실시간으로 전달받게 하려면, B는 서버에 계속 접속해야 하는데 이러면 배터리나 네트워크 사용으로 인해 문제가 발생할 겁니다. 그래서 중간에 Firebase 서버(혹은 구글 클라우드 서버)가 문제를 해결해줍니다.

모든 앱들은

(1) A -> 서버 -> Firebase 서버 -> B

(2) 서버 -> Firebase 서버 -> B

이런 방식으로 실시간으로 B에게 메시지를 보내고 있습니다.

앱에서 홍보를 할 때는 서버 없이 Firebase 콘솔에서 바로 B로 보낼 수 있습니다.

(3) Firebase 서버 -> B

----------------------------------------------------------------------------------------------------------------------

그러면 이제 서버에서 백그라운드 앱에 테스트 메시지 보내는 방법을 보겠습니다.

우선 IOS와 안드로이드에서 FCM Token을 생성해서 DB에 저장이 되어있어야 합니다.

이 부분은

https://firebase.google.com/docs/web/setup?hl=ko

에서 보고 진행하시면 됩니다.

1. Node 서버에 firebase-admin 을 설치합니다.

npm install firebase-admin --save

2.

(1) Firebase 페이지에서 톱니바퀴 아이콘을 클릭

(2) <프로젝트 설정>으로 들어갑니다.

(3) <서비스 계정>을 들어가서 Node.js를 선택

(4) 아래에 <새 비공개 키 생성>을 클릭해서 키 파일을 다운로드 받습니다.

이제 서버 단에서 코드를 입력해서 메시지 푸시를 보냅니다.

const firebaseAdmin = require('firebase-admin'); const serviceAccount = require('./받은 키파일.json'); firebaseAdmin.initializeApp({ credential: admin.credential.cert(serviceAccount), }); const fcmToken = 'FCM토큰'; const message = { notification: { title: '시범 데이터 발송', body: '클라우드 메시지 전송이 잘 되는지 확인하기 위한, 메시지 입니다.' }, token: fcmToken }; // Send a message to the device corresponding to the provided // fcm token. firebaseAdmin.messaging().send(message) .then((response) => { // Response is a message ID string. console.log('Successfully sent message:', response); }) .catch((error) => { console.log('Error sending message:', error); });

이제 이 코드를 실행해서 라우터를 통해서 메시지를 보내면 핸드폰에서 알림이 뜨는 것을 확인할 수 있습니다.

반응형

from http://yunbo96.tistory.com/100 by ccl(A) rewrite - 2021-11-04 17:01:40