지난 글에서 FCM 세팅 방법에 대해 이야기했다.
이번에는 원하는 유저에게 알맞은 메시지를 가공해서 푸시 알림을 줄 수 있도록 FCM에 요청하는 간단한 서버 구현 과정을 기록해보겠다. (서버라고 하기에도 민망한 50~60줄짜리 js코드지만 iOS 개발자인 내겐 완전히 새로운 경험이었다)
0. 서버 왜 필요하지?
FCM이 알아서 다 해주는 거 아니야? 라고 생각할 수 있는데 FCM 구성요소는 아래 두 가지다.
- Google에서 제공하는 FCM 백엔드
- 서버 로직이 실행되는 앱 서버 또는 다른 신뢰할 수 있는 서버 환경
앱 서버 또는 신뢰할 수 있는 서버 환경에서 FCM백엔드로 메시징 요청을 보내고 FCM 백엔드는 사용자 기기에서 실행되는 클라이언트 앱에 메시지를 보낸다.
결국 나는 FCM이 다 해주길 기대했지만(?) 나만의 서버가 필요한 것이었다. 흑흑
1. Firebase Admin SDK 설치
(node 설치는 완료되었다고 가정한다)
Firebase Admin Node.js SDK는 npm으로 제공된다. 아래와 같이 SDK를 설치해주자.
$ npm install firebase-admin --save
그리고 나의 server.js 코드에서 require로 가져와준다.
const { initializeApp } = require('firebase-admin/app');
Firebase > Project Overview > 톱니바퀴 > Project settings > Service accounts로 가보자.
위 사진처럼 SDK private key를 생성할 수 있는 버튼이 있다. 버튼을 눌러 private key를 생성한다. 그리고 다운로드하여 데스크탑에 저장해 주자.
그리고 다시 server.js로 돌아와 아래처럼 private key를 amin에 초기화시켜준다.
const admin = require('firebase-admin');
const serviceAccount = require("path/to/privateKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
2. FCM에 메시징 요청
이제 내가 구현한 (작고 귀여운) 서버와 Firebase 간의 연결이 만들어졌으니, FCM 백엔드에 푸시 알림을 보내라고 메시징 요청을 하면 된다.
let token = "fcmToken" // 푸쉬를 보내고자 하는 타겟 디바이스의 토큰
var pushNotification = {
notification: {
title: messageTitle, // 푸쉬알림 타이틀
body: messageBody // 푸쉬알림 내용
},
token: token
};
admin.messaging().send(pushNotification)
.then(function(response) {
console.log(' success')
})
.catch(function(error) {
console.log(' fail' + error)
});
마지막으로 node server.js 커맨드를 통해 실행시키면 내 서버 -> FCM -> 디바이스 경로를 통해 푸시 알림이 전송된다!
'사이드 프로젝트' 카테고리의 다른 글
[위로 개발일지 3편] Apps Script를 이용한 Firestore 데이터 관리 (0) | 2022.03.12 |
---|---|
[위로 개발일지 1편] FCM을 이용한 iOS 앱 푸시알림 보내기 (0) | 2022.03.12 |