푸시 알림은 앱이나 웹에서 사용자에게 메세지 형태로 알림을 주는 것을 말한다.
Firebase 클라우드 메시징(FCM)은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다.
FCM을 사용하면 새 이메일이나 기타 데이터를 동기화할 수 있음을 클라이언트 앱에 알릴 수 있다. 이렇게 알림 메시지를 전송하여 사용자를 유지하고 재참여를 유도할 수 있다.
Firebase 사이트에서 프로젝트를 생성해준다.
Firebase
사용하고자 하는 앱에 Firebase를 추가해준다.
클라이언트는 다음 코드를 통해 디바이스 토큰을 받는다.
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w(TAG, "Fetching FCM registration token failed", task.exception)
return@OnCompleteListener
} // Get new FCM registration token
val token = task.result // Log and toast
val msg =token.toString();
Log.d(TAG, msg)
Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})
새 비공개 키를 생성하고 다운로드 해준다.
firebase 모듈을 다운로드 해준다.
sudo npm install firebase --save
다운 받은 비공개키의 경로를 다음과 같이 정의해준다.
const admin = require("firebase-admin");
let serviceAccount = require("./firebase-admin.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
});
app.get('/app/push', user.pushAlarms)
exports.pushAlarms = async function(req, res){
let deviceToken=`token값 입력`
let message = {
notification:{
title: 'PushAlarms Test',
body:'Check your CoupangEats',
},
token:deviceToken,
}
admin
.messaging()
.send(message)
.then(function(response){
console.log('Successfully sent message:', response)
return res.status(200).json({success: true})
})
.catch(function(err) {
console.log('Error Sending message!!! : ', err)
return res.status(400).json({success: false})
});
}
deviceToken에 특정 유저의 토큰 값을 넣게 되면 그 유저에게 푸시 알람이 전달된다.
실제로 실행하기 위해서는 디바이스 토큰 값을 로그인을 할 때 클라이언트 쪽에서 받아서 유저 DB에 디바이스 토큰 값을 같이 저장해야 한다.