【问题标题】:Firebase Push Notification when a new child is added to the Database将新子项添加到数据库时的 Firebase 推送通知
【发布时间】:2018-02-27 02:06:11
【问题描述】:

我希望每次在 Firebase 数据库中创建新的孩子时都会收到通知。这是我到目前为止得到的。使用这行代码,您会在创建新孩子时收到通知。但问题是通知总是带有标题:“标题”,正文:“来检查它”。现在是我的问题,我如何创建一个值为 City 和 Time 的通知(参见下面的结构)

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

exports.sendPushNotification = functions.database.ref('/Rollerbanken/{Id}').onCreate(event => {

    const payload = {
    notification: {
    title: 'Title',
    body: 'come check it',
    badge: '0',
    sound: 'default',
    }
};
    return admin.database().ref('fcmToken').once('value').then(allToken => {
    if(allToken.val()) {
    const token = Object.keys(allToken.val());
    return admin.messaging().sendToDevice(token, payload).then(response => {
            });
        };
    });
});

我的结构:

{
  "Rollerbanken" : {
    "-KuKDXL2pY9MMtw551ZI" : {
      "Extrainformatie" : "",
      "Latitude" : "51.9145932124898",
      "Longitude" : "5.86974696138047",
      "Staater" : "Staat er",
      "Staaternietmeer" : "",
      "City" : "Overbetuwe",
      "Time" : "15 : 43",
      "TijdControle" : "15 : 43",
      "TijdControleniet" : "",
      "TypeControle" : "Rollerbank"
    }
  }

希望你能帮帮我!

【问题讨论】:

  • 您可能想要查看 Cloud Functions for Firebase 并编写一个数据库触发器,该触发器使用管理 SDK 在数据库中的位置发生更改时发送通知。 firebase.google.com/docs/functions

标签: javascript firebase-realtime-database firebase-cloud-messaging google-cloud-functions firebase-admin


【解决方案1】:

基本上,您需要为要发送的每个通知修改有效负载对象。好消息是它只是一个对象,您可以轻松访问它,所以您只需payload.name = YOURDESIREDVALUEHERE

因此,您需要做的是获取新密钥(令牌)并使用它来访问您的对象。除非我弄错了 Object.keys 生成一个数组,所以你的访问密钥应该是 token[0],然后用它来访问你的值,就像这样 allToken.val()[token[0]]["City"]

您的代码如下所示:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendPushNotification = functions.database.ref('/Rollerbanken/{Id}').onCreate(event => {

    const payload = {
    notification: {
    title: 'Title',
    body: 'come check it',
    badge: '0',
    sound: 'default',
    }
};
    return admin.database().ref('fcmToken').once('value').then(allToken => {
    if(allToken.val()) {
    const token = Object.keys(allToken.val());
    payload.notification.title = allToken.val()[token[0]]["City"] + allToken.val()[token[0]]["Time"] //change here
    return admin.messaging().sendToDevice(token, payload).then(response => {
            });
        };
    });
});

【讨论】:

  • 它不再发送任何通知了。
  • i.stack.imgur.com/l61K8.png 这是它得到的错误
  • 哦,可以,我没有注意到有效载荷是一个嵌套对象。你只需要访问payload.notification.title。再次编辑。
  • 不用担心,(以及它的 javascript,而不是 java,它们是 非常 不同的语言),基本上我没有注意到您的 title 属性位于有效载荷对象,所以我没有访问我认为的属性。
  • 我仍然有错误。它也不会发送通知i.stack.imgur.com/4UvKy.png
猜你喜欢
  • 2018-05-04
  • 1970-01-01
  • 2016-10-15
  • 2023-03-07
  • 2018-04-05
  • 2016-12-08
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多