FCM에는 모바일에 필요한 다양한 서비스를 제공하고 있다. 그 중 가장 많이 사용하는 서비스 중 하나인 Cloud Messaging 서비스의 서버를 node.js를 통해, 제작해 보겠습니다. 이 문서는 비공개 키를 통해 SDK를 초기화해 send 메소드를 통해 보내기를 합니다. 만약 그렇지 않은 경우, 토큰을 받거나, 유지하는 기능까지 구현해야 할 수도 있습니다. 다른 방법으로 하려면 참고해 주시기 바랍니다.
선행작업으로, 안드로이드 기기에 메시지를 받을 앱이 깔려 있어야 합니다.
요구사항 : node 6.0 이상
정식 문서
서버 환경 및 FCM : https://firebase.google.com/docs/cloud-messaging/server?authuser=0
서버에 Firebase Admin SDK 추가 : https://firebase.google.com/docs/admin/setup?authuser=0 .
보내기 요청 작성 : https://firebase.google.com/docs/cloud-messaging/send-message?authuser=0
1. Firebase Admin SDK 설치
관련 문서인 서버 Firebase Admin SDK 추가 문서를 읽어 보면 다양한 경우에 대한 SDK 서버 설치 관련 옵션이 존재 합니다. 우리는 node.js 로 설치 할 것이 므로, node.js 관련 부분만 보면 되겠습니다.
1) firebase 관리자 설치.
$ npm install firebase-admin --save
2) sdk 초기화를 위한 비 공개 키 다운로드.
먼저, 프로젝트 설정으로 이동합니다.
서비스 계정 -> 새 비공개 키 생성을 차례로 선택해 줍니다.
새 비공개 키 생성 창이 뜨면 키 생성 버튼을 눌러 키를 생성합니다.
그럼 키가 다운로드 되는 데 이것을 적당한 위치에 저장합니다.
3) 소스 추가. 위에서 확인한 내용을 토대로, 아래 소스에 값을 쉽게 넣을 수 있으리라 생각됩니다.
var admin = require('firebase-admin');
var serviceAccount = require('path/to/serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
위 코드를 보면, Admin SDK 초기화 부분에, databaseURL: 'https://<DATABASE_NAME>.firebaseio.com' 부분이 있는데 위 코드에는 왜 빠져 있지 라고 생각하시는 분들이 있을 수 있습니다. 보내기 요청 승인 이라는 문서가 있는 데 이 문서는 지금처럼 자동으로 보내지 않는 경우 토큰으로 처리해야함을 설명하고 있는 문서 이며, 지금과 같이 Admin SDK를 사용하는 경우, Admin ADK를 초기화 하는 설명이 나와 있습니다. 이 부분에, 데이터 베이스 부분을 넣지 않고 설정하고 있습니다. 확인해 본 결과, 메시지를 보낼 때는 이 부분이 필요 없습니다.
2. 보내기
메시지 보내는 것은 보낼 메시지를 만드는 부분과 이를 보내는 부분을 구현하면됩니다. 보내는 방법은 개별기기에, 주제별, 조건별로 보낼 수 있습니다. 각각의 방법은 firebase 공식문서를 참고해 주시기 바랍니다. 여기서는 한 기기에 보내기만 합니다. 소스는 아래와 같으며, 설명은 불필요 할 것으로 보입니다.
// 보낼 메시지를 작성하는 부분 입니다.
var fcm_target_token = "cdtmyCPou2I:APA91bHYP7ltSi6Q_nd8lGVJnwrhYcHcQJIRFaseE494PYe1mQKBe1QfhW-8i_gEpJZqSM1XcWZrqkXEVxWt9BTGpQctJ_RVy9V3OZU-ltcITNpANsB0HsCa9gvRpNM3iOGKoDjOGeqa";
var fcm_message = {
notification: {
title: '시범 데이터 발송',
body: '클라우드 메시지 전송이 잘 되는지 확인하기 위한, 메시지 입니다.'
},
data:{
fileno:'44',
style:'good 입니다요~'
},
token:fcm_target_token
};
// 메시지를 보내는 부분 입니다.
fcm_admin.messaging().send(fcm_message)
.then(function( response ){
console.log('보내기 성공 메시지:' + response);
})
.catch(function( error ){
console.log( '보내기 실패 메시지:' + error );
});
'Node.js' 카테고리의 다른 글
node.js를 이용한 iOS Push 구현하기 (requests to APNs) (0) | 2019.04.14 |
---|---|
Android 결제 서버 개발 (0) | 2019.04.09 |
express 사용시 주의 사항. (0) | 2019.03.04 |
node.js 로 엑셀 파일 다루기 (xlsx) (0) | 2017.09.03 |
npm을 이용한 외부모듈 설치 (node.js) (0) | 2017.09.03 |