从 Firebase 云函数发送通知,通知为空

Posted

技术标签:

【中文标题】从 Firebase 云函数发送通知,通知为空【英文标题】:sending notification from firebase cloud functions getting null as notification 【发布时间】:2019-11-29 02:30:30 【问题描述】:

当我从 firebase 云函数发送通知时,当孩子被添加到 firebase 数据库时,它成功发送了一个通知,但是当我从 firebase 数据库中删除孩子时,我收到通知,因为下面是我得到的屏幕截图链接当我从 firebase 数据库中删除孩子时的通知

//import firebase functions modules
const functions = require('firebase-functions');

//import admin module
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

// Listens for new debate created
exports.pushNotifications = functions.database.ref('app_title').onWrite(( change,context) => 
    console.log('Push notification event triggered');

       const app_title = change.after.val();

        const payload = notification: 
            title: 'New Notification',
            body: `$app_title`
            
        ;

   return admin.messaging().sendToTopic("appGlobal",payload)
       .then(function(response)
            console.log('Notification sent successfully:',response);
       )
       .catch(function(error)
            console.log('Notification sent failed:',error);
       );
);

【问题讨论】:

在日志中打印您从 FCM 获得的通知 【参考方案1】:

change.after.val()为null,因为它被删除了,你应该返回change.before.val()进行删除操作(参考answer)

检查类似的更改以检测删除

//Comment created

if (change.after.exists() && !change.before.exists()) 
    return //TODO
    );

    //Comment deleted
 else if (!change.after.exists() && change.before.exists()) 
    return //TODO              
    );

    //Comment updated
  else if (change.after.exists() && event.data.previous.exists()) 
        return //TODO
    

你需要实现onCreate、onDelete而不是onWrite以获得更好的结果

onWrite(),在数据被创建、更新或删除时触发 实时数据库。

onCreate(),在实时创建新数据时触发 数据库。

onUpdate(),当实时更新数据时触发 数据库。

onDelete(),当从 Realtime 中删除数据时触发 数据库。 (ref)

【讨论】:

如果它有效,请接受它作为答案。它对其他人也有帮助。随时欢迎您 谢谢@majuran 这真的帮了我

以上是关于从 Firebase 云函数发送通知,通知为空的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 函数从 Firebase DB 获取数据以进行推送通知

如何在不使用 Firebase 控制台的情况下向 iOS 设备发送 Firebase 云消息通知?

有没有办法从 firebase 控制台发送 firebase 网络推送通知

设备未收到 Firebase 云消息通知

使用firebase云功能在特定时间发送FCM通知[重复]

Swift 从用户向用户发送推送通知 Firebase