You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

FCM v1 API发送Android通知报错:The notification has no target applications 解决咨询

解决FCM v1 API报错“The notification has no target applications”的方案

1. 验证设备注册令牌的有效性

  • 确认请求中message.token字段是当前设备有效的FCM注册令牌,令牌过期、被撤销或格式错误都会导致目标无法匹配。可以让设备重新调用FirebaseMessaging.getInstance().getToken()获取新令牌测试。
  • 检查令牌是否归属当前FCM项目,不同项目生成的令牌无法跨项目使用。

2. 严格遵循FCM v1 API的消息结构

FCM v1的请求格式与旧版Legacy API不同,必须包含顶层message节点,且目标字段(token/topic/condition)不能缺失。示例正确请求体:

{
  "message": {
    "token": "VALID_DEVICE_REGISTRATION_TOKEN",
    "notification": {
      "title": "测试通知标题",
      "body": "测试通知内容"
    },
    "android": {
      "notification": {
        "channel_id": "你的Android通知渠道ID"
      }
    }
  }
}
  • 避免遗漏token等目标定位字段,这是报错的核心原因之一。

3. 检查服务账号权限与项目配置

  • 确认使用的Client Email对应的服务账号,在Google Cloud控制台的IAM页面已分配Firebase Cloud Messaging Admin角色,缺少权限会导致消息无法正确路由。
  • 核对Project ID的拼写、大小写,确保与Google Firebase控制台的项目ID完全一致。

4. 验证设备端FCM配置

  • 设备应用中的google-services.json文件必须与当前FCM项目匹配,文件内的project_idapi_key等参数不能错误。
  • 确认设备应用已成功完成FCM注册流程,启动时能正常获取令牌,无注册失败的日志报错。

5. 确认API端点正确性

FCM v1的请求端点为:

https://fcm.googleapis.com/v1/projects/{PROJECT_ID}/messages:send

不要混用旧版Legacy API的端点(https://fcm.googleapis.com/fcm/send),端点不匹配会导致消息格式解析错误。

6. 测试最小化请求

先发送结构最简化的请求(仅包含token和基础notification字段),排除复杂配置(如自定义data字段、Android高级设置)的干扰,确认基础请求能成功后再逐步扩展功能。

内容的提问来源于stack exchange,提问作者Arpit Soni

火山引擎 最新活动