【问题标题】:Flutter: Firebase Pushnotification On Data ChangeFlutter:数据更改时的 Firebase 推送通知
【发布时间】:2018-11-12 18:51:57
【问题描述】:

收到评论后,我已将此以下代码部署到我的 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');
}
});

[

更多详情请查看VIDEO LINK

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

【问题讨论】:

    标签: firebase dart flutter flutter-layout flutter-dependencies


    【解决方案1】:

    您可以使用 firebase 云功能来触发通知。这是我用来触发通知的云函数的 sn-p:

    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用于向特定设备发送通知,您可以使用 FirebaseInstanceId.getInstance().getToken() 获取此 tokenId 并将其保存在您的 fbproject1 > items 数据库结构中。请参考this & this

    【讨论】:

    • @RajeshJr。此代码不是android原生代码,此代码是firebase云功能,您必须在firebase控制台的firebase函数中写下,当您从flutter代码中将任何数据添加到通知数据库节点时,此功能将触发并且通知将被发送
    • @RajeshJr。请检查我更新的答案,如果您需要任何帮助,请告诉我。
    • @RajeshJr。请检查我更新的答案,如果您需要任何帮助,请告诉我。
    • admin.messaging().sendToDevice(request.body, payload) 在此您的第一个参数应该是 tokenId,第二个参数是您的有效负载。
    • 如果你想只向一个人发送通知而不是没有办法,你将不得不使用tokenId,但如果你想基于主题发送通知,你可以将admin.messaging().sendToDevice(request.userTokenId, payload)更改为admin.messaging().sendToTopic(topicname,payload) 。希望这会对你有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2016-12-08
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多