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

Flutter FCM/本地通知:如何获取完整原始消息?

解决Flutter Local Notifications回调拿不到完整消息的问题
  • 核心原因:NotificationResponse本身不会自动携带通知的标题、正文等内容,这些信息需要你在发送通知时主动塞进payload里,才能在回调中获取。

步骤1:发送通知时传入完整消息到payload

发送通知的代码里,把标题、正文等需要的内容通过payload传递,建议用JSON格式序列化:

await _flutterLocalNotificationsPlugin.show(
  1, // 自定义通知ID
  "转账提醒", // 通知标题
  "您收到一笔500元的转账", // 通知正文
  NotificationDetails(
    android: AndroidNotificationDetails(
      'cash_notify_channel',
      '资金通知频道',
      importance: Importance.high,
    ),
    iOS: DarwinNotificationDetails(),
  ),
  // 把完整消息序列化成JSON字符串作为payload
  payload: jsonEncode({
    'title': "转账提醒",
    'body': "您收到一笔500元的转账",
    // 可添加其他自定义字段,比如转账ID、发起方信息等
  }),
);

步骤2:在回调中解析payload获取完整消息

修改你现有的onDidReceiveNotificationResponse回调,解析payload拿到完整内容:

onDidReceiveNotificationResponse: (NotificationResponse notificationResponse) async {
  log.d(notificationResponse.notificationResponseType);
  log.d(notificationResponse.actionId);
  log.d(notificationResponse.input);
  log.d(notificationResponse.id);
  
  // 新增解析payload的逻辑
  if (notificationResponse.payload != null) {
    final messageData = jsonDecode(notificationResponse.payload!);
    log.d('完整标题:${messageData['title']}');
    log.d('完整正文:${messageData['body']}');
    // 这里可以拿到你之前塞进去的所有自定义数据
  }
}

额外说明

  • 如果你是通过后台任务等其他方式触发本地通知,也要确保构建通知时传入包含完整消息的payload。
  • NotificationResponse的id只是通知的标识ID,和消息内容无关,无法通过它反向获取消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:36:10