NODE에서 FCM을 이용하여 어플에(유니티) PUSH 메시지 보내기

2021. 2. 4. 15:25Node.js, Express

Firebace에 클라우드 메시징을 이용하여 노드 서버에서 푸시 메시지를 보내는 방법

순서

*(이 부분은 유니티 쪽에서 해주는 것)*

 

fcm프로젝트 생성 => admin sdk 설정 => *(같은 fcm프로젝트안에  유니티 앱을 만들고  sdk를 설정하여 디바이스 토큰을 전달)* => 전달 받은 토큰을 가지고 푸시메시지 전송

 

firebase.google.com

1. firebase에 가서 프로젝트를 만든다.

계속 버튼을 누르며 프로젝트를 정상적으로 생성

2. node 서버에 SDK를 구성한다.

프로젝트 설정으로 들어가서

 

서비스 계정을 누르면 화면이 나온다

serviceAccount 에 들어갈 json파일을  새 비공개 키 생성 버튼을 눌러 다운받고 코드를 복사 한다.

 

여러 라우터에 복사한 스니팻값을 중복으로 넣으면 오류 발생하니 파일을 만들어서 함수로 호출하는 방법을 이용 할 것이다.

 

vscode로 돌아가 파일을 하나 생성해 준다.

push-message.js라고 이름으로 만들것이고 이름은 마음대로 지정해주면 된다

 

먼저

 

npm i firebase-admin 

으로 firebase-admin 라이브러리를 설치 하고

복사한 코드를 저장한다. serviceAccount에는 경로에 맞게 넣어주면 된다.

 

const admin = require('firebase-admin')

const serviceAccount = require('../config/test-project-15f83-firebase-adminsdk-epied-54f111.json')
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
})
module.exports = {
// registrationTokens = 디바이스 토큰값
// payload = 푸시 메시지값
// options = 옵션 값
  pushMessage: (registrationTokens, payload, options) => {
  
  }
}

그 후

firebase.google.com/docs/cloud-messaging/send-message

api 문서 sendToDevice() 메서드 를 이용하여  여러 디바이스에 푸시메시지를 전송한다.

 

const admin = require('firebase-admin')

const serviceAccount = require('../config/test-project-15f83-firebase-adminsdk-epied-54f111.json')
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
})
module.exports = {
// registrationTokens = 디바이스 토큰값
// payload = 푸시 메시지값
// options = 옵션 값
  pushMessage: (registrationTokens, payload, options) => {
  
  admin.messaging().sendToDevice(registrationTokens, payload, options)
      .then((response) => {
      // Response is a message ID string.
        console.log('Successfully sent message:', response)
      })
      .catch((error) => {
        console.log('Error sending message:', error)
      })
      
  }
}

함수를 생성하고

 

push-message.js를 require하여 가져온다.

const pushing = require('../lib/push-message')
// 디바이스들의 토큰값
 const registrationTokens = [
      'dzrAUiIXRouf81hJq36eOF:APA91bE2iAEw2Q7ON6SHHsH0Ez8a5f7GZFhi-3wD1xS6lmETG5SfbBImvK8oWHsqSP1TvR_iBezBps_jTz27xk7F7GoQZBgQuAKkKXm3sEZK1KOkY0uYo6XMbgpKexTJPvqdBIEJqqr-',
      'ditNQsbOR3eP02dgYZwCTP:APA91bE3onxB6zKTrP_UYihh_hVgVCpzopvlTzChuccdh7h0pc5cYqzZrb2-u_4PEaxbiRHXl4-dpv7if07ULsdl1SZ8bVA8H3wwB1mbEZPBaQiEzEu16g9iI8YKvzperZViDJzvkw--'
    ]
// 메시지
    const payload = {
      notification: {
        title: '스테이지가',
        body: '열렀습니다!'
      }
    }
// 옵션
    const options = {
      priority: 'normal',
      timeToLive: 60 * 60 * 24
    }
// 불러온 함수 값을 넣어서 실행 시켜주면 된다.
    pushing.pushMessage(registrationTokens, payload, options)

옵션은 보통 우선순위와 높은 우선순위로 나뉘고, 

firebase.google.com/docs/cloud-messaging/concept-options

링크에 나온거 처럼 설정이 가능하니 확인해서 사용하면 된다.

 

실행을 하면 핸드폰으로 푸시 메시지가 온것을 확인 할 수 있다.

출처 firebase.google.com

728x90
반응형