firebase - Flutter:关于数据更改的 Firebase 推送通知
问题描述
收到评论后,我已将此以下代码部署到我的 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');
}
});
[
有关更多详细信息,请参阅此视频链接
注意:如果您的应用程序已打开并最小化,则会显示通知,但如果应用程序已打开并且您正在使用,或者应用程序被终止强制关闭,则它将无法正常工作!!
解决方案
您可以使用 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 管理面板 > 功能 > 日志。
您已经完美地部署了功能代码,但是您忘记在数据库中添加刷新 tokenId,如上图所示,我正在保存userTokenId
在我的数据库中,并且在功能中admin.messaging().sendToDevice(request.userTokenId, payload)
我正在使用该 tokenId,此 tokenId 用于向特定设备发送通知,您可以使用获取此 tokenIdFirebaseInstanceId.getInstance().getToken()
并将其保存在您的fbproject1 > items
数据库结构中。请参考这个&这个
推荐阅读
- python - 在 python 数据框中创建索引查找
- statistics - 是否有合适的统计测试来比较两组(1x2,费舍尔?)的观察次数?
- azure - Azure AD 将角色分配给其他组织用户
- python-3.x - 使用带有 aws lambda 部署包的轮子
- go - 如何在 golang 中为 new relic(Golang New relic integration)创建通用或全局上下文?
- python - tkinter,Checkbutton,相同的代码在def或单个文件中具有不同的结果
- lua - FiveM 'then' 预计在 '=' 附近
- powerbi - 如何计算动态日期中客户数量的增长百分比
- gitpython - 在集群上使用 qsub 提交作业时,使用 gitpython 获取当前哈希不起作用
- php - laravel 应用程序在浏览器上访问时显示 laravel 文件结构