FCM에는 모바일에 필요한 다양한 서비스를 제공하고 있다. 그 중 가장 많이 사용하는 서비스 중 하나인 Cloud Messaging 서비스의 서버를 node.js를 통해, 제작해 보겠습니다. 이 문서는 비공개 키를 통해 SDK를 초기화해 send 메소드를 통해 보내기를 합니다. 만약 그렇지 않은 경우, 토큰을 받거나, 유지하는 기능까지 구현해야 할 수도 있습니다. 다른 방법으로 하려면 참고해 주시기 바랍니다.

선행작업으로, 안드로이드 기기에 메시지를 받을 앱이 깔려 있어야 합니다.

 

FCM Push notification (android)

서버에서 안드로이드로 메시지를 보내는 방법을 포스팅합니다. 파이어 베이스에서는 쉽다고 홍보하고 있지만, 프로그래머 대부분은 여기서 머리를 싸매게 됩니다. 일단 파이어 베이스 문서(공식)가 별로 자세하지..

nicgoon.tistory.com

 

요구사항 : 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 );
  });

 

 

 

 

 

 

Posted by 창업닉군
,