当前位置: 首页 > 知识库问答 >
问题:

颤振:数据更改时Firebase Pushnotification

冀鸿才
2023-03-14

收到评论后,我已将以下代码部署到我的Firebase项目中,并已成功部署!。但没有向我发送任何通知。请在此处查看我的Firebase实时数据库截图以更好地理解。

[现已解决:它将只向一个ID(即我的管理设备)发送通知]

工作代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firbase);
exports.codeformypeople = functions.database.ref('items/{id}').onWrite(evt => {

const payload = {
notification: { title: 'New Customer Requested', body: 'Touch to Open The App', badge: '1', sound: 'default', }
};
const token ="Lsn-bHfBWC6igTfWQ1-h7GoFMxaDWayKIpWCrzC";//replace with ur token

if (token) {
console.log('Toke is availabel .');
return admin.messaging().sendToDevice(token, payload);
} else {
console.log('token error');
}
});

有关更多详细信息,请参阅此视频链接

注意:如果您的应用程序已打开并最小化,则会显示通知,但如果应用程序已打开且您正在使用,或者如果应用程序已终止,则强制关闭,则不会工作!!

共有1个答案

卫嘉泽
2023-03-14

您可以使用Firebase云函数来触发通知。这是我用来触发通知的云函数片段:

const functions = require('firebase-functions');

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

exports.pushNotification = functions.database.ref('/Notifications/{pushId}')
 .onWrite(( change,context) => {
    console.log("Push Notification event triggered");
    var request = change.after.val();
    var payload = {
        data:{
            username: request.userName,
        }
    };
    admin.messaging().sendToDevice(request.userTokenId, payload)
    .then(function(response){
        console.log("Successfully sent message: ",response);
        console.log(response.results[0].error);
    })
    .catch(function(error){
        console.log("Error sending message: ", error)
    })
 })

下面我提供了我的通知结构,您可以在下面看到。如果在数据库通知节点中推送任何新数据,此功能将触发。要查看触发此功能时您得到的输出/错误,请转到Firebase管理面板

您已经完美地部署了函数代码,但您忘记了在数据库中添加刷新令牌ID,如上图所示,我正在我的数据库和函数管理中保存用户令牌ID。消息传递()。sendToDevice(request.userTokenId,payload)我正在使用该tokenId,该tokenId用于向特定设备发送通知,您可以使用FirebaseInstanceId获取该tokenId。getInstance()。getToken()并将其保存在您的fbproject1中

 类似资料:
  • 这是输出: 我试图制作一个应用程序,但当我使用时,我得到了两个按钮之间的空间 我需要一个接一个没有空间 如果使用小部件,不起作用 我尝试了,但我无法清除这些内容。 我尝试使这种类型的. 有人知道或知道这件事吗?

  • 我想把时间02:21:22改为2小时21分22秒。我如何在颤振中做到这一点?

  • 根据日志文件,我甚至不知道另一个文件夹中还有第二个清单文件。我刚接触过扑动

  • 我有以下Firebase实时数据库连接到我的Flatter项目: 我对flutter和fire base相当陌生,我知道在我的flutter项目中访问此数据库中数据的一种方法是使用数据库引用变量。所以我有以下参考变量: 现在,如何使用此itemRef访问数据库中的温度和脉冲值?

  • 我开始将我的代码从使用标准的Android库转换为Flatter,这样我也可以快速部署到iOS设备上,但我只是担心TextField的比例;也就是说,Flatter的文本字段的比例不同于Android的EditText。 相比之下,以下是Android的EditText: 这里是Flutter的TextField: 有没有办法让Flutter TextField看起来更像Android EditT

  • 我可以使用“startAfter”和“limit”进行分页,但它有错误。 例如,在Firestore DB中,我有7条记录: 当页面大小为5时,第一页就可以了,因为我使用了: 它给了我1-5项。 当它加载第二页时,我使用了: 问题是第二页结果只有item7,item6消失了。“开始”也有同样的问题。 真希望它有“抵消”功能,有人有解决办法吗?