#node.js #firebase #firebase-cloud-messaging #nestjs
#node.js #firebase #firebase-облачный обмен сообщениями #nestjs
Вопрос:
Я пытаюсь создать API fcm с использованием nest js, который я использую в flutter. Я новичок в Nest js, и я реализовал код, используя это. В моем коде нет ошибки, но я не получаю уведомление на свой телефон Ниже приведен мой служебный файл, в котором я реализовал push-уведомление
async sendMessageToUser(registrationToken) {
var message = {
android: {
ttl: 3600 * 1000, // 1 hour in milliseconds
data: {
title: "hiii",
body: "hello",
}
},
apns: {
headers: {
'apns-priority': '10'
},
payload: {
"aps": {
"alert": {
"body": "hii",
"title": "hello"
},
"sound": "dafault",
}
}
},
token: registrationToken
};
// Send a message to the device corresponding to the provided
// registration token with the provided options.
try{
Logger.log("FIrst try catch");
await admin.messaging().send(message);
try {
Logger.log("second try catch");
} catch (error) {
Logger.error(error);
}
}catch (error) {
Logger.error(error);
}
}
файл main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
import admin, { ServiceAccount } from 'firebase-admin';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe());
// Set the config options
const adminConfig: ServiceAccount = {
"projectId":"my firebase projetId",
"privateKey": "private key".replace(/\n/g, 'n'),
"clientEmail": "firebase client email",
};
// Initialize the firebase admin app
admin.initializeApp({
credential: admin.credential.cert(adminConfig),
databaseURL: "db url",
});
app.enableCors();
await app.listen(3000);
}
bootstrap();
может кто-нибудь сказать мне, что не так с моим кодом, почему я не получил уведомление на свой телефон?
Комментарии:
1. Вы пробовали печатать результаты admin.messaging().send()?
Ответ №1:
Создайте модуль для инициализации приложения Firebase firebase.module.ts
import {ApiConfigService} from '@config/config.service'
import {Module} from '@nestjs/common'
import * as admin from 'firebase-admin'
import * as adminConfig from 'firebase-creds.json'
@Module({})
export class FirebaseModule {
constructor(configService: ApiConfigService) {
admin.initializeApp({
credential: admin.credential.cert(adminConfig),
databaseURL: "db URL",
})
}
}
А затем использовать его таким образом app.module.ts
@Module({
imports: [
FirebaseModule,
...
],
})
export class AppModule {}
После этого вы сможете использовать его в любой службе, которую вы хотите, как admin.messaging().sendtodevice, как вы делаете в своем коде