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
相关产品推荐
相关产品推荐

