Firebase Cloud触发功能-如何向所有用户发送通知?

洛克怀欧

我是Firebase Cloud Functions的新手(接触2天)。当Firebase数据库检测到已添加新数据时,我尝试向我的应用程序的所有用户发送通知。这是我到目前为止的内容:

exports.sendNotification = functions.database.ref("/uploads/{pushId}").onCreate(event => {

  const snapshot = event.data;
  var str = snapshot.child("name").val();
  console.log(str);

  if (snapshot.previous.val()) {
    return 0;
  }

  if (snapshot.val().name != "ADMIN") {
    return 0;
  }

  const text = snapshot.val().text;
  const payload = {
    notification: {
      title: snapshot.name,
      body: ""
    }
  }
  //return admin.messaging().sendToDevice(tokens, payload);
});

我知道代码现在处于混乱状态,这是由于来自各个教程站点的几次复制和测试所致。我可以从console.log成功获取数据的名称,但是无法将通知发送给所有用户。

我知道大多数使用令牌和设备ID。但是,有没有更简单的方法可以发送给我的每个用户?我是否需要为我的应用添加任何Java代码,此通知才能正常工作?

编辑1:按照Peter的建议,我更新了功能:

exports.sendNotification = functions.database.ref("/uploads/{pushId}").onCreate(event => {

  const snapshot = event.data;
  var str = snapshot.child("name").val();
  console.log(str);

  if (snapshot.previous.val()) {
    console.log("RETURN 1");
    return 0;
  }

  const payload = {
    notification: {
      title: str,
      body: ""
    }
  }

  return admin.messaging().sendToTopic("Users", payload)
  .then(function(response){
        console.log("Notification sent ", response);
  })
  .catch(function(error){
        console.log("Error sending notification: ", error);
  });
});

我还在代码中添加了以下java:

FirebaseMessaging.getInstance().subscribeToTopic("Users");

我现在遇到的问题是,在Firebase控制台上它说通知已成功发送,但是在我的手机上我什么都没收到。在我的情况下是否必须使用onMessageReceived方法?

我注意到的一件事是,每次启动应用程序时都会调用上述声明。这会以任何方式影响结果吗?

彼得·哈达德

我认为最简单的方法是topics,您可以将所有用户都订阅到一个用户中topic,然后向该主题发送通知。您必须将return语句更改为此:

return admin.messaging().sendToTopic("Cat", payload);

因此,现在所有订阅topic“猫”的用户都将收到通知。当然,您也可以将主题更改为所需的任何内容。

要为用户订阅主题,您需要做的就是编写以下代码:

FirebaseMessaging.getInstance().subscribeToTopic("Cat"); //in java code

检查此以获得更多信息主题消息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Firebase Cloud Messaging:如何向所有用户发送数据消息?

Firebase Cloud Messaging-向所有用户发送消息

如何使用消息 api 向所有用户发送 firebase 推送通知

Firebase Cloud功能-触发Expo SDK向用户推送通知

当新数据添加到数据库时如何从firebase向所有用户发送推送通知

向Firebase中的所有用户推送通知

向Firebase中的所有用户推送通知

Firebase Cloud Messaging主题被忽略,所有用户不断收到通知

如何向所有在Firebase中注册的用户发送推送通知?

向 Firebase 验证所有用户

Firebase Messaging:通过云功能向所有应用程序用户发送数据消息

Firestore的Firebase Cloud功能未触发

如何编写Firebase Cloud Messaging功能以发送推送通知

如何使用带有实时数据库/分析触发器的Firebase Cloud功能调度程序?

Google Cloud Storage上传会触发Firebase Cloud功能吗?

Firebase onDisconnect如何触发其他功能

如何在 Google Cloud 服务器中触发实时数据库字段(不在 Firebase 的功能中)

Firebase Cloud Functions是否有触发限制?

一次触发Firebase Cloud功能的最佳做法

Firebase Cloud功能触发两次onUpdate

您如何通过CURL向所有设备发送Firebase通知?

Firestore使用Firebase功能删除帐户删除中的所有用户数据

如何基于用户属性,用户受众群体发送Firebase Cloud Messaging通知

Firebase功能未触发

Firebase Cloud功能+具有更新和插入/设置的Firebase

是否可以根据用户的时区在 Firebase 中触发云功能?

用户删除时未触发Firebase云功能

将所有Firebase Cloud功能重写为托管

如何从云功能调用其他Cloud Firebase功能