#android #angular #firebase #ionic-framework #firebase-cloud-messaging
# #Android #angular #firebase #ionic-framework #firebase-облако-обмен сообщениями
Вопрос:
Я разрабатываю push-уведомления для своего приложения Ionic. У меня есть служба уведомлений, в которой у меня:
// Get permission from the user
async getToken() {
let token;
if (this.platform.is('android')) {
token = await this.firebase.getToken();
}
if (this.platform.is('ios')) {
await this.firebase.grantPermission();
token = await this.firebase.getToken();
// await this.firebaseNative.grantPermission();
}
console.log('Saving token ' token ' to Firebase and Askme');
return this.saveTokenToFirestore(token);
}
// Save the token
private saveTokenToFirestore(token: string){
if(!token){
return;
}
const devicesRef = this.firestore.collection('devices');
if (this.licenseService.currentLicense) {
this.configService.getStoredUsername(this.licenseService.currentLicense.referenceURL).then((username: string) => {
const docData = {
token,
userId: username,
};
return devicesRef.doc(token).set(docData);
});
}
}
// Listen to incoming FCM messages
onNotifications() {
return this.firebase.onMessageReceived();
}
И в моем app.component:
// Get a token
this.notservice.getToken();
this.notservice.onNotifications().pipe(
tap(async msg => {
const toast = await this.toastController.create({
message: msg.body,
duration: 5000
});
toast.present();
})
)
.subscribe();
});
В настоящее время я получаю push-уведомления с консоли Firebase, но я хотел бы подключить Firebase к своему серверу приложений. У меня есть метод, который возвращает сообщения, и это:
onMessage:(msg) => {
this.receiveMessage(msg);
Как я могу связать этот метод с моей конфигурацией Firebase, чтобы увидеть это сообщение в качестве push-уведомления?
Мне практически нужно запускать уведомления из моего бэкэнда.
Большое спасибо
Ответ №1:
Вы можете запускать уведомления через Firebase, используя облачные функции Firebase:
Ниже приведен пример в NodeJS :
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
exports.sendPush = functions.https.onRequest(async (request, response) => {
functions.logger.info("Hello logs!", {structuredData: true});
const categoryId = request.query.categoryId;
const topicName = 'status_all';
const payload = {
data : {
sound: "default",
categoryId: categoryId
}
}
admin.messaging().sendToTopic(topicName,payload).then(function(res){
response.send('Success: ' res);
})
.catch(function(err){
response.send('Error: ' err);
});
});
Когда вы развернете это, это даст вам конечную точку. Вы можете вызвать эту конечную точку из бэкэнда, чтобы запустить уведомление, или вы можете написать cron на своем бэкэнд-сервере, который будет запускать это с определенным интервалом.
Если вам нужно только протестировать свою реализацию уведомлений, запустив уведомление через бэкэнд, вы можете следовать этому подходу. https://apoorv487.medium.com/testing-fcm-push-notification-through-postman-terminal-part-1-5c2df94e6c8d
Комментарии:
1. ваш ответ вообще не касается вопроса
2. @Llama Я объяснил, как отправлять уведомления с помощью облачных функций Firebase, которые являются бэкэндом. Пользователь может вызвать это со своего сервера, что, как я полагаю, является целью.
3. @Llama Из упомянутого вопроса «Мне практически нужно запускать уведомления из моего бэкэнда», я понял только это. Триггеры, такие как триггер базы данных и т. Д., Там не упоминаются. Не могли бы вы помочь мне понять, если я что-нибудь упущу?