当前位置: 首页 > 知识库问答 >
问题:

通过condition向多个主题发送Firebase云消息(FCM)的正确语法是什么

慕容渊
2023-03-14

我只想使用谷歌云功能向订阅多个主题的设备发送通知。

文件上说:

“‘TopicA’主题

我想做的是:

var topicsConditions = `'${type}' in topics && ('${area}' in topics || '${city}' in topics)`;

// Send a message to devices subscribed to the provided topic.
admin.messaging().sendToCondition(topicsConditions, notificationPayload)
  .then(function(response) {
    // See the MessagingTopicResponse reference documentation for the
    // contents of response.
    console.log("Successfully sent message:", response);
  })
  .catch(function(error) {
    console.log("Error sending message:", error);
  });

但我一直在犯这样的错误:

发送消息时出错:{Error:提供的参数无效。原始服务器响应:“无效的“条件”字段:仅支持“主题”条件”。状态代码:400.在FirebaseMessaginError.FirebaseMessaginError.FirebaseError.FirebaseError[作为构造函数](/user_code/node_modules/firebase admin/lib/utils/Error.js:39:28)在FirebaseMessaginError.PrefixedFreebaseError[作为构造函数](/user_-code/node_-modules/firebase-admin/lib/utils/error.js:85:28)在/user_-code/node_-modules/firebase-admin/lib/utils/error.js:241:16)的新firebase-admin/lib/messaginger/messaging api请求中。js:115:23在程序中_tickDomainCallback(internal/process/next_tick.js:135:7)errorInfo:{code:'消息传递/无效参数',message:'提供的参数无效。原始服务器响应:“无效”条件字段:仅支持'topics\'条件\n'。状态代码:400'.},代码前缀:'消息传递'}

谁能告诉我正确的语法?

编辑:主题的日志输出为:

主题条件='MyType'在主题

共有2个答案

邓元白
2023-03-14

如果你想和变量一起使用,你可以这样使用

const condition = `\'${OLDUSERS}\' in topics || \'${CURRENTLYBOOKED}\' in topics`;

在这种情况下使用send方法。

笪建章
2023-03-14

主题名称中可能使用的字符限于:

  • 小写字母az
  • 大写字母AZ
  • 数字09
  • 字符-_~%

您的主题名称包含无效字符、空格和阿拉伯语。

有关更多详细信息,请参阅文档:

开发人员可以选择与正则表达式匹配的任何主题名称:“[a-zA-Z0-9-uz.~%””

有效条件字符串的一个示例是:

var topicsConditions = "'Aswan' in topics && ('Giza' in topics || 'Cairo' in topics)";

我成功地使用了这个字符串调用admin.messaging(). sendToCon条件()

 类似资料:
  • 我正在尝试为Web设置Firebase云消息传递。我成功地对其进行了正确初始化并获得了令牌: manifest.json与gcm_sender_id 我可以看到我在控制台中得到令牌,所以我试图验证它,并通过邮递员发送我的第一个通知-这里是留档。 发布网址:https://fcm.googleapis.com/v1/projects/PROJECTID/messages:发送授权:无授权 标题 Bo

  • 我正在开发一个渐进式Web应用程序(PWA),我需要通过推送消息发送重要的提醒。即使离线,用户也应该收到它们。有没有可能使用Firebase云消息(FCM)(可能预加载消息或类似的东西?)或者我需要为脱机获取不同的路由吗?

  • 我使用此代码通过C#与GCM发送通知消息,使用Winform,Webform,无论什么。现在我想发送到FCM(Firebase云消息传递)。我应该更新我的代码吗?: 但GCM改为FCM。发送通知的代码是否相同?在哪里可以找到服务器API密钥?是相同的解决方案吗?

  • 我在用Kafka。这是我的代码,在那里我想发送消息到kafka服务器,主题名是“west”,消息是“message1”。我没有收到任何错误,虽然我没有看到我发送的消息在主题中有什么问题吗?

  • 我正在使用kafka java客户端和kafka服务器。 我的代码: Kafka马纳格 当我的循环长度如果在1000左右(在类)时,我就能成功地向Kafka主题发送数据。 但当我的循环长度为1或小于10时,我无法向Kafka主题发送数据。注意我没有得到任何错误。 根据我的发现,如果我想发送一个单一的消息到Kafka主题,根据这个程序我得到了成功的消息,但从来没有得到一个关于我的主题的消息。 但是如

  • 通过FCM发送的消息的统计信息可以在Google Play开发者控制台中使用消息ID或注册令牌进行检查。但当我尝试使用消息发送到主题时返回的消息id运行FCM诊断时,会显示无效消息id错误。FCM文档中也没有提到这一点。有人知道如何检查发送到主题的fcm消息的统计信息吗?