如何在 Flutter 和 Firebase 的前台打印(message.data)
Posted
技术标签:
【中文标题】如何在 Flutter 和 Firebase 的前台打印(message.data)【英文标题】:How to print(message.data) on foreground at Flutter & Firebase 【发布时间】:2021-10-07 15:25:18 【问题描述】:我正在将Cloud Messaging 函数添加到我的android APP,我无法在前台截断message.data。
例子是
FirebaseMessaging.onMessage.listen((RemoteMessage message)
print('Got a message whilst in the foreground!');
print('Message data: $message.data');
if (message.notification != null)
print('Message also contained a notification: $message.notification');
);
它应该打印第一行Got a message whilst in the foreground!...
,
但我明白了
D/FLTFireMsgReceiver( XXXX): broadcast received for message
W/com.XXXXXX.XXXXXX( XXXX): Accessing hidden method Landroid/os/WorkSource;->add(I)Z (greylist,test-api, reflection, allowed)
W/com.XXXXXX.XXXXXX( XXXX): Accessing hidden method Landroid/os/WorkSource;->add(ILjava/lang/String;)Z (greylist,test-api, reflection, allowed)
W/com.XXXXXX.XXXXXX( XXXX): Accessing hidden method Landroid/os/WorkSource;->get(I)I (greylist, reflection, allowed)
W/com.XXXXXX.XXXXXX( XXXX): Accessing hidden method Landroid/os/WorkSource;->getName(I)Ljava/lang/String; (greylist, reflection, allowed)
我错过了什么吗?
【问题讨论】:
【参考方案1】:从这个issue看来,这是firebase_messaging
最新版本的一个错误,当前的解决方法是在收听消息之前添加一行来获取令牌。
将您的代码更新为:
await FirebaseMessaging.instance.getToken(); // Add this line
FirebaseMessaging.onMessage.listen((RemoteMessage message)
print('Got a message whilst in the foreground!');
print('Message data: $message.data');
if (message.notification != null)
print('Message also contained a notification: $message.notification');
);
【讨论】:
感谢回复,现在可以了。你知道如何不显示这个剪断吗?dart W/com.XXXXXX.XXXXXX( XXXX): Accessing hidden method Landroid/os/WorkSource;->add(I)Z (greylist,test-api, reflection, allowed) . . .
【参考方案2】:
FirebaseMessaging.onMessage.listen((message) async
if (message.notification != null)
print(
'Message contained a notification, with the following:\nTitle: $message.notification?.title\nBody: $message.notification?.body');
return;
).onData((data)
print('Got a DATA message whilst in the FOREGROUND!');
print('data is: $data.data');
);
基本上您需要将onData
用于onMessage 或前景或背景。
【讨论】:
感谢回复,不过还是登录broadcast received for message...
将它也添加到前台消息中,并确保您实际上正在发送数据。它是一个Map
对象。
请问您使用的是哪个firebase_messaging ^版本?最新版本有一些错误。除此之外,您的剪辑工作完美。
firebase_messaging: ^10.0.3
firebase_messaging_web: ^2.0.2
以上是关于如何在 Flutter 和 Firebase 的前台打印(message.data)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flutter 在 Firebase 中正确登录和注册?
如何在 Flutter 中从 firebase 存储读取和写入文本文件?
如何在 Flutter 和 Firebase 的前台打印(message.data)