如何用Firebase Admin Java SDK按国家/版本分群推通知并修复条件报错?
解决Firebase Admin Java SDK条件推送的无效参数异常
你遇到的问题是因为FCM的条件表达式语法有严格规范,你的写法不符合官方要求,具体修正方案如下:
错误原因拆解
device.country不是FCM支持的条件字段,正确的国家/地区匹配字段是device.region- FCM不支持数组语法
['us', 'uk'],多值匹配需要用||(或)运算符逐个枚举
修正后的条件表达式
把原条件改成符合规范的写法:
String condition = "device.os == 'android' && (device.region == 'us' || device.region == 'uk')";
常用支持的条件字段
FCM仅允许使用以下设备/应用属性作为条件:
device.os:设备系统(可选值:'android'、'ios'、'web')device.region:设备所在国家(ISO 3166-1 alpha-2格式,比如'us'、'jp')device.language:设备语言(比如'en'、'zh')app.version:应用版本号(支持==、!=、<、<=、>、>=比较)device.vendor:设备厂商(比如'samsung'、'apple')device.model:设备型号
应用版本分群推送示例
如果要推送给Android平台上版本≥1.5.0的用户,条件可以这么写:
String condition = "device.os == 'android' && app.version >= '1.5.0'";
额外注意事项
- 条件表达式总长度不能超过4096字符
- 逻辑运算优先级要用括号明确,避免歧义
- 所有字符串值必须用单引号包裹,不能用双引号
内容的提问来源于stack exchange,提问作者yang ross
相关产品推荐
相关产品推荐

