【问题标题】:firebase functions notificationsfirebase 函数通知
【发布时间】:2018-02-21 08:29:53
【问题描述】:

我正在尝试使用 FCM 服务发送简单的推送通知。

每次调用我的函数时,我都希望收到一条通知,并且我希望我的手机响铃和振动。我有两个问题:

当我收到通知时,我收到了 5 个而不是 1 个。

第二个问题是,如果我的手机在收到通知时启动了声音,则手机不会振动或响铃,但如果它处于振动模式,则在收到通知时它会振动。

任何想法如何解决这个问题?谢谢!

'use strict'

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

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

exports.sendNotification = functions.database.ref('/Alerts/{email_encoded}/{alert_id}').onWrite(event => {

    const email_encoded = event.params.email_encoded;

    const alert_id = event.params.alert_id;

    const deviceToken = admin.database().ref(`/Users/${email_encoded}/device_token`).once('value');

    deviceToken.then(result => {

        const token_id = result.val();
        const payload = {
            notification: {
                title: "Alert",
                body: "alert triggered",
                icon: "default",
                sound:"default",
                vibrate:"true"
            }
        };


      return admin.messaging().sendToDevice(token_id, payload);
});

});

以及firebase数据库json结构:

"Alerts" : {
    "asdfgh@yahoo,com" : {
      "-KtXc_c7RMxysWGEb98L" : {
        "bid" : "1.30",
        "email" : "asdfgh@yahoo.com",
        "id" : "-KtXc_c7RMxysWGEb98L",
        "parity" : "EURUSD",
        "sign" : ">"
      },
      "-KtmCD7REa9AKK57xhXP" : {
        "bid" : "1.33",
        "email" : "asdfgh@yahoo.com",
        "id" : "-KtmCD7REa9AKK57xhXP",
        "parity" : "EURUSD",
        "sign" : ">"
      },
      "-KtmCpypQM_N1ub471Ta" : {
        "bid" : "1.333",
        "email" : "asdfgh@yahoo.com",
        "id" : "-KtmCpypQM_N1ub471Ta",
        "parity" : "EURUSD",
        "sign" : ">"
      }
    }

我尝试从 Firebase 仪表板发送通知。即使在高级设置中我选择了启用声音,当我在手机上收到通知时,它并没有振动或响铃。

【问题讨论】:

  • 如何将数据写入/Alerts/{email_encoded}/{alert_id}?添加数据时,是否有多个孩子分别添加?例如,您要添加email_encodedalert_id 作为/Alerts/{email_encoded}/{alert_id} 的子节点。您是否分别添加每个值?因为每个都将被视为写入和触发onWrite
  • 当我添加数据时,它只是在编码的电子邮件(带有@yahoo,com)下方创建另一个具有随机ID的孩子
  • 所以有 5 个孩子,这就是它被调用 5 次的原因。您可以改用.onCreate,它在数据首次添加到节点时触发,而不是在任何时候添加、更改或删除时触发。另请更新您的问题以包括数据库的结构。请以 JSON 格式编写数据库代码,因为这样便于人们进行测试,并且您可能会收到更多回复。
  • 现在我只收到 1 条通知,非常感谢@JenPerson ! .声音还是乱七八糟的,我得再看看。我也更新了我的问题,谢谢!

标签: node.js firebase firebase-realtime-database firebase-cloud-messaging google-cloud-functions


【解决方案1】:

问题是在我的手机上我的通知声音关闭了。我在我的 android /res/raw 中添加了一个声音“mysound”并将sound:"default"更改为sound:"mysound",现在我什至在收到通知时得到了我想要的声音。

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 2019-01-30
    • 2018-04-14
    • 2018-03-15
    • 2019-11-29
    • 2019-04-04
    • 2019-09-25
    • 2018-09-29
    • 2021-10-07
    相关资源
    最近更新 更多