

import { Injectable } from '@nestjs/common/decorators/core/injectable.decorator';
import { Inject, Logger } from '@nestjs/common';
import * as firebaseConfig from './firebase.config.json';
import * as admin from 'firebase-admin';
const firebase_params = {
type: firebaseConfig.type,
projectId: firebaseConfig.project_id,
privateKeyId: firebaseConfig.private_key_id,
privateKey: firebaseConfig.private_key,
clientEmail: firebaseConfig.client_email,
clientId: firebaseConfig.client_id,
authUri: firebaseConfig.auth_uri,
tokenUri: firebaseConfig.token_uri,
authProviderX509CertUrl: firebaseConfig.auth_provider_x509_cert_url,
clientC509CertUrl: firebaseConfig.client_x509_cert_url,
};
@Injectable()
export class FcmService {
constructor() {
admin.initializeApp({
credential: admin.credential.cert(firebase_params),
});
}
async fcm(token: string, title: string, message: string) {
const payload = {
token: token,
notification: {
title: title,
body: message,
},
data: {
body: message,
},
};
console.log(payload);
const result = await admin
.messaging()
.send(payload)
.then((response) => {
// Response is a message ID string.
// console.log('Successfully sent message:', response);
// return true;
return { sent_message: response };
})
.catch((error) => {
// console.log('error');
// console.log(error.code);
// return false;
return { error: error.code };
});
return result;
}
}참고 : https://noonestaysthesame.tistory.com/m/17
https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko