2021. 2. 4. 15:25ㆍNode.js, Express
Firebace에 클라우드 메시징을 이용하여 노드 서버에서 푸시 메시지를 보내는 방법
순서
*(이 부분은 유니티 쪽에서 해주는 것)*
fcm프로젝트 생성 => admin sdk 설정 => *(같은 fcm프로젝트안에 유니티 앱을 만들고 sdk를 설정하여 디바이스 토큰을 전달)* => 전달 받은 토큰을 가지고 푸시메시지 전송
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
링크에 나온거 처럼 설정이 가능하니 확인해서 사용하면 된다.
실행을 하면 핸드폰으로 푸시 메시지가 온것을 확인 할 수 있다.
'Node.js, Express' 카테고리의 다른 글
Node, Express에서 dotenv사용해서 env파일 사용하기 (0) | 2021.02.20 |
---|---|
Node, Express 서버분리 (빌드서버, 테스트서버) 분리하기 (0) | 2021.02.20 |
helmet, helmet-csp사용방법, 오류 Refused to load the (0) | 2020.12.01 |
우분투 node 12 설치, 최신 npm설치 명령어 (0) | 2020.11.26 |
X-Powered-By헤더 차단 Helmet사용, Express (0) | 2020.10.30 |