You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OneSignal带标签过滤推送失败:提示“所有目标用户未订阅”求助

解决OneSignal通知发送失败:“所有包含的用户未订阅”问题

刚碰到过类似的坑,来帮你一步步排查这个报错,大概率是这几个细节没注意到:

1. 标签大小写不匹配(最可能的原因)

OneSignal的标签是大小写敏感的!你提到要给带“Broodjes”(首字母大写)标签的用户发通知,但你的curl请求里写的是"key": "broodjes"(全小写)。这会导致OneSignal找不到任何匹配的用户,直接返回“所有用户未订阅”的错误。

修正方法:把过滤器里的key改成和用户标签完全一致的大小写:

"filters": [ {"field": "tag", "key": "Broodjes", "relation": "exists"} ]

2. 确认用户确实带有目标标签

有时候可能误以为用户已经打上了标签,但实际操作中可能漏了。你可以用OneSignal的Players API来验证:

curl -X GET "https://onesignal.com/api/v1/players?app_id=<你的APP_ID>" \
-H "Authorization: Basic <你的REST_API_KEY>"

返回结果里,检查每个用户的tags字段,确认是否存在"Broodjes"标签。

3. 过滤掉未订阅/失效的用户

即使用户有标签,也可能处于未订阅或失效状态。你可以在过滤器里加上订阅状态条件,确保只针对活跃订阅用户:

"filters": [
  {"field": "tag", "key": "Broodjes", "relation": "exists"},
  {"field": "subscription_status", "relation": "=", "value": "1"}
]

这里value: 1代表用户处于订阅状态,0是未订阅,2是失效状态。

4. 再次确认API权限和APP_ID

虽然你说已经填了有效信息,但还是快速核对下:

  • 你的REST API Key是否有Create Notifications权限(在OneSignal控制台的「Settings > Keys & IDs」里查看)
  • APP_ID是否和用户所属的应用完全匹配

修正后的完整curl示例

curl -X POST \
https://onesignal.com/api/v1/notifications \
-H 'Authorization: Basic <你的REST_API_KEY>' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{ 
  "app_id": "<你的APP_ID>", 
  "filters": [ 
    {"field": "tag", "key": "Broodjes", "relation": "exists"},
    {"field": "subscription_status", "relation": "=", "value": "1"}
  ], 
  "contents": {"en": "English Message"} 
}'

内容的提问来源于stack exchange,提问作者Sascha Mendel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:20:42