ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] [ Firebase] FCM서버를 이용한 푸시 알림 보내기
    Node.js 2020. 10. 15. 13:51

     

     

    firebase의 FCM 서버를 이용해 Android, IOS 에 푸시 알림을 보낼 수 있는 간단한 서버 예제를 만들어보겠습니다.

     

     

    firebase.google.com/docs/cloud-messaging/server?hl=ko

    firebase 공식 문서에도 잘 나와있습니다.

     

    firebase에 프로젝트는 만들어둔 상태입니다

     

     

     

    1. 먼저 Firebase Admin SDK를 설치해줍니다

    $ npm install firebase-admin --save

     

    2. 서버키 다운로드

     

    SDK를 초기화 해주려면 서버키가 필요합니다

    console.firebase.google.com/

     

    firebase 콘솔 화면으로 들어가서 '설정 아이콘 > 프로젝트 설정 > 서비스 계정 > 새 비공개키 생성'

     

    이렇게 생성된 키를 적당한 곳에 둡니다. 저는 node 프로젝트 파일 안에 뒀어요

     

    그리고 SDK를 초기화해주는 코드를 입력합시다

     

     

    3. SDK 초기화

    const admin = require('firebase-admin')
    
    let serAccount = require('../서버 키 이름.json')
    
    admin.initializeApp({
      credential: admin.credential.cert(serAccount),
    })

    저는 프로젝트 파일 안에 서버키를 넣기 때문에 저렇게 썼지만 그냥 서버키 파알의 경로를 적어주시면 됩니다

     

     

    4. PUSH 메시지 보내기

     

     

    // push PAGE
    router.get('/push_send', function (req, res, next) {
      let target_token =
        'e5p9Ul2BRc-MgZHP8Dx_wB:APA91bG9pnGqSJQLGrazz3tq0JkPKJlTY5cHmylMiR8dAdGAdKi9o_rf9y55H1mmvvAgHj0ZKjZyk23Q_trNrmgQx1A6h3LaoADdlPV-kX5czoDnL1F-gc2DOZJucEmf4To6hje4AfHl'
    	//target_token은 푸시 메시지를 받을 디바이스의 토큰값입니다
    
      let message = {
        data: {
          title: '테스트 데이터 발송',
          body: '데이터가 잘 가나요?',
          style: '굳굳',
        },
        token: target_token,
      }
    
      admin
        .messaging()
        .send(message)
        .then(function (response) {
          console.log('Successfully sent message: : ', response)
        })
        .catch(function (err) {
          console.log('Error Sending message!!! : ', err)
        })
    })

    이렇게 하면 해당 토큰을 가진 앱에 푸시 알림이 갑니다

     

     

     

    5. 전송 과정

     

    이제 이 푸시 메시지가 어떻게 서버에서 디바이스로 전달되는지 알아봅시다

    firebase의 클라우딩 메시지는 HTTP 프로토콜로 전달됩니다.

     

    ① 서버에서 FCM 서버로 HTTP Request를 post 방식으로 요청하면

    ② FCM서버에서 HTTP Response 응답이 옵니다

    ③ 그리고 FCM 서버에서 앱으로 메시지를 보냅니다

    ④ 앱에서는 받은 메시지를 처리하고 음답 메시지를 보냅니다.

     

     

    FCM에 보낼 메시지 형식입니다

    "to" : "[디바이스 토큰 값]", 
    "priority" : "high", 
    "notification" : { 
       "title" : "BackGround Title", 
       "body" : "Background Message"
    }, 
    "data" : { 
       "title" : "ForeGround Title", 
       "body" : "Foreground Message" 
    }

     

    댓글

Designed by Tistory.