FCM目标条件语法



我找不到任何官方的FCM文档来解释构造传递给FCM的条件字符串以发送目标推送的正确语法。我正在使用优秀的Firebase Admin SDK for PHP,使用它我可以像一样瞄准传出消息的接收者

CloudMessage::withTarget('condition',$condition)->withNotification($notif)->withData($data);

通常,我可以构建简单的条件,例如

"('topicFoo' in topics) && !('topicBar' in topics)";

这将确保消息发送到不是主题CCD_ 2的订户的CCD_。这是我自己通过反复试验得出的。但假设我想构建更复杂的条件,如

"(('topicFoo1' in topics) || ('topicFoo2' in topics)) && !(('topicBar1 in topics) || ('topicBar2' in topics))"

虽然我也可以通过一点尝试和错误来弄清楚这一点,但最好有明确的谷歌文档来解释什么可以做,什么不能做。是否存在FCM强加的条件复杂性的最大水平?

我所知道的关于向主题发送消息的文档,其中包含关于条件的这一部分:

若要向主题组合发送消息,请指定一个条件,该条件是指定目标主题的布尔表达式。例如,以下条件将向订阅了TopicATopicBTopicC的设备发送消息:

"'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)"

FCM首先计算括号中的任何条件,然后从左到右计算表达式。在上面的表达式中,订阅任何单个主题的用户都不会收到消息。同样,未订阅TopicA的用户也不会接收到该消息。这些组合确实收到了它:

  • TopicATopicB
  • TopicAtopicFoo0

在条件表达式中最多可以包含五个主题。

还有一个代码片段可以发送到有条件的主题,所以我建议也在链接中查看。

相关内容

  • 没有找到相关文章

最新更新