Flutter中Firebase Messaging发送主题消息无示例,求助使用方法
Flutter Firebase Messaging 主题消息发送说明
首先明确:Flutter端的firebase_messaging SDK不支持直接发送主题消息,发送主题消息的操作需要通过Firebase控制台、Firebase Admin SDK(服务器端)或者FCM HTTP API来完成,客户端仅负责订阅/取消订阅主题以及接收消息。
关于FirebaseMessaging.instance.sendMessage的说明
这个方法是用于客户端向单个指定设备发送消息,而非主题群发,使用时需要传入目标设备的FCM token,示例代码如下:
await FirebaseMessaging.instance.sendMessage( to: "目标设备的FCM Token", messageId: "自定义消息ID", data: { "title": "测试消息", "body": "这是一条客户端发送的消息", }, );
发送主题消息的正确方式
方式1:通过Firebase控制台
- 登录Firebase控制台,进入你的项目
- 打开「Cloud Messaging」模块
- 点击「发送您的第一条消息」,填写消息内容
- 在「目标」选项中选择「主题」,输入你要发送的主题名称(比如你之前订阅的
topic) - 配置其他选项后,点击「发送测试消息」即可
方式2:通过Firebase Admin SDK(服务器端,以Node.js为例)
const admin = require('firebase-admin'); admin.initializeApp(); // 发送主题消息 admin.messaging().sendToTopic('topic', { notification: { title: '主题通知', body: '这是发送给topic主题订阅者的消息', }, data: { customKey: 'customValue', }, }) .then((response) => { console.log('消息发送成功:', response); }) .catch((error) => { console.log('消息发送失败:', error); });
方式3:通过FCM HTTP API
发送POST请求到https://fcm.googleapis.com/fcm/send,请求头需要包含Authorization: key=你的服务器密钥,请求体示例:
{ "to": "/topics/topic", "notification": { "title": "主题通知", "body": "这是发送给topic主题订阅者的消息" }, "data": { "customKey": "customValue" } }
你之前用FirebaseMessaging.instance.subscribeToTopic("topic");完成订阅是正确的,现在只要通过上述任意一种方式发送主题消息,订阅该主题的设备就能收到通知。
内容的提问来源于stack exchange,提问作者Noor
相关产品推荐
相关产品推荐

