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);
});
이제 이 코드를 실행해서 라우터를 통해서 메시지를 보내면 핸드폰에서 알림이 뜨는 것을 확인할 수 있습니다.
'Javascript > Node.js' 카테고리의 다른 글
Promise.all() (0) | 2021.11.02 |
---|---|
[mac/vscode] 프로젝트마다 node 버전 다르게 사용하는 방법 (0) | 2021.10.26 |
모듈 시스템 (0) | 2021.09.30 |
promise API (0) | 2021.09.28 |
콜백 (0) | 2021.09.27 |