标签表达式

标签格式

移动推送支持单Tag多Tag推送:

  • 单Tag推送时,TargetValue的值是普通字符串,直接存放该Tag的名字即可。

  • 多Tag推送时,TargetValue需要使用标签表达式,如下所述。

标签表达式

当推送目标为标签(Target=tag)时,可以选择在标签字段(TargetValue)中使用标签表达式,以实现自定义的多标签条件推送。

语法

标签表达式通过使用条件操作符和标签的嵌套与组合,来表达多标签之间的复杂条件关系,其描述基于JSON格式。

操作符和标签类型对象在JSON结构中使用了不同的关键字进行标识,如下表所示:

关键字

类型

含义

and

操作符

表达“且”关系,可作用于一个或多个子表达式或标签

or

操作符

表达“或”关系,可作用于一个或多个子表达式或标签

not

操作符

表达“非”关系,只能作用于一个标签

tag

标签

具体的标签节点,存储业务标签名称

说明

  • 每一个tag对应的是KeyType和ClientKey的键值对,在解析TagValue的表达式时,不会把Tag解析为具体的deviceId,而是解析为KeyType和ClientKey的键值对进行运算,并取得最终的运算结果。

  • 例如:一个deviceId属于别名alias1、alias2,alias1、alias2分别属于tag1、tag2,那么TargetValue={"and": [{"tag": "tag1"}, {"tag": "tag2"}]} 等价于求{<KeyType=alias, clientKey=alias1>}∩{<KeyType=alias, clientKey=alias2>},最终结果为{}。

限制

  • 操作符限制:

    • andor操作符的最大嵌套层数:2

    • andor操作符的最大操作数:10

  • 推送频次限制:

    • 标签结果集在500万以上:2次/天

    • 标签结果集在100万到500万之间:20次/天

    • 标签结果集在10万到100万之间:100次/天

    • 标签结果集在10万以内:不限制

  • 如果您有更大的使用需求,请提工单申请。

示例

{
  "and": [
    {
      "tag": "男性"
    },
    {
      "not": {
        "tag": "90后"
      }
    },
    {
      "or": [
        {
          "not": {
            "tag": "国外"
          }
        },
        {
          "tag": "活跃"
        }
      ]
    }
  ]
}

上述表达式将筛选出标签符合”男性、非90后、活跃或非国外“的用户。