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

如何使用FCM仅发送数据而不推送通知(Django+Flutter)

实现FCM纯数据消息推送(无通知展示)

要发送纯数据消息而不触发系统通知栏展示,只需利用FCM的数据消息类型——这类消息不会向用户展示任何通知,只会将数据传递给Flutter应用。以下是修改后的Django后端代码:

from pyfcm import FCMNotification

# 全局初始化一次即可,无需在函数内重复创建实例
push_service = FCMNotification(api_key="****")

def send_single_data(deviceID, data):
    try:
        result = push_service.notify_single_device(
            registration_id=deviceID,
            data=data  # 仅传递自定义数据字典,不设置通知标题和内容
        )
    except Exception as e:
        print(f"单设备数据消息发送失败: {e}")

def send_multi_data(list_of_ids, data):
    try:
        result = push_service.notify_multiple_devices(
            registration_ids=list_of_ids,
            data=data  # 仅传递自定义数据字典
        )
    except Exception as e:
        print(f"多设备数据消息发送失败: {e}")

使用示例

# 向单个设备发送数据
target_device = "用户的FCM设备ID"
data_payload = {
    "action": "sync",
    "resource_id": "789",
    "timestamp": "2024-05-20T10:30:00"
}
send_single_data(target_device, data_payload)

# 向多个设备批量发送数据
device_list = ["设备ID1", "设备ID2", "设备ID3"]
send_multi_data(device_list, data_payload)

关键注意点

  • 必须移除message_title和message_body参数,仅通过data传递自定义键值对。
  • Flutter端需配置FCM消息监听逻辑:
    • 前台运行时,通过FirebaseMessaging.onMessage监听,从message.data字段提取数据。
    • 后台/应用终止状态下,需通过FirebaseMessaging.onBackgroundMessage配置回调处理数据。

内容的提问来源于stack exchange,提问作者Ahmed Wagdi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:41:35