如何使用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
相关产品推荐
相关产品推荐

