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

Flutter使用Firebase Messaging打印消息只显示Instance of 'RemoteMessage'如何解决

解决方法

你遇到的打印输出为Instance of 'RemoteMessage'的问题,是因为RemoteMessage是Firebase Messaging定义的实体类,默认的toString方法仅输出实例标识,不会输出内部存储的消息内容,你只需要手动访问该类的内置属性即可打印完整的消息信息。

具体代码修改

你只需要调整initialize方法中三处打印的逻辑,替换为访问RemoteMessage的属性即可:

Future initialize() async {
  // 处理应用未打开时点击推送触发的初始消息
  FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage? message) {
    if (message != null) {
      print('=== getInitialMessage 消息内容 ===');
      print('消息ID:${message.messageId}');
      print('发送方ID:${message.senderId}');
      // 打印通知栏展示的标题和内容
      if (message.notification != null) {
        print('通知标题:${message.notification?.title}');
        print('通知内容:${message.notification?.body}');
      }
      // 打印自定义携带的data参数
      print('自定义数据:${message.data}');
    }
  });
  // 处理应用在前台时收到的推送
  FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
    print('=== onMessage 消息内容 ===');
    print('消息ID:${message.messageId}');
    print('发送方ID:${message.senderId}');
    if (message.notification != null) {
      print('通知标题:${message.notification?.title}');
      print('通知内容:${message.notification?.body}');
    }
    print('自定义数据:${message.data}');
  });
  // 处理应用在后台存活时点击推送触发的消息
  FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
    print('=== onMessageOpenedApp 消息内容 ===');
    print('消息ID:${message.messageId}');
    print('发送方ID:${message.senderId}');
    if (message.notification != null) {
      print('通知标题:${message.notification?.title}');
      print('通知内容:${message.notification?.body}');
    }
    print('自定义数据:${message.data}');
  });
}

补充说明

日志中的Unable to log event: analytics library is missing警告不影响推送接收和内容打印,仅为缺少Firebase Analytics依赖的提示,不需要相关功能可以直接忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:54:04