Azure Notification Hub免费层多tag设备为何无法接收对应tag及表达式通知?
可能的排查方向
- tag值的精确匹配校验
Azure通知中心的tag匹配为全量精确字符串匹配,对大小写、首尾隐含空格、不可见转义字符零容错。可以进入两台设备对应的注册详情页,逐字符核对第二台设备注册条目中的RECEIVERtag值: - 如果存在大小写差异(如注册时存储为
receiver)、首尾空格、转义字符,即便视觉上和发送时输入的RECEIVER完全一致,也会导致单tag定向发送无法命中目标。 - 第一台设备的tag值经过完全匹配校验,无格式差异,因此能正常收到带
RECEIVERtag的推送。 - 注册条目结构异常
调用注册接口时,如果每次发起注册都未传入已存在的registrationId,系统会为同一设备生成多份独立的注册记录: - 第一台设备仅生成1份独立注册条目,条目内tag为
RECEIVER,可被单tag发送规则正常命中。 - 第二台设备的3个tag如果被拆分存储到多份独立注册条目内(例如首次注册生成条目1仅带
RECEIVER,后续无关联的重新注册生成条目2带Curitiba和PR),观测到的“设备共带3个tag”是跨多个注册条目的tag总和,不存在同时包含三个tag的单条注册记录,无论单tag发送还是tag表达式发送都无法正确命中。 - 投递格式不匹配
测试页的发送格式选择会直接影响投递结果: - 无tag的广播通知默认向所有兼容格式的注册条目投递,因此即便第二台设备使用模板注册、第一台使用原生FCM注册,两台设备都可以正常收到广播消息。
- 切换为带tag的定向发送时,如果选择了仅向原生FCM格式投递,第二台设备的模板注册条目即便tag值完全匹配,也会因投递格式不兼容被直接过滤,无法收到通知。
- Tag表达式输入错误
Tag表达式的语法校验比单tag规则严格: - 若复制表达式时带入HTML转义字符(如从源码复制内容时
&&被替换为&&),实际提交的表达式并非合法的RECEIVER && Curitiba && PR,系统会判定为无效表达式,返回匹配注册数为0的空响应。 - 表达式中连接符写错、空格位置错误,也会导致匹配结果异常。
通知中心免费层对单条注册的tag数量、tag表达式的使用无特殊限制,单注册最多支持60个tag,匹配逻辑和付费层完全一致。
内容的提问来源于stack exchange,提问作者Geter Moura
相关产品推荐
相关产品推荐

