【发布时间】:2021-09-09 13:58:11
【问题描述】:
我从旧的 Firebase_messaging 插件 6 + 升级到新的 Firebase_messenger 插件 10 +,我可以做大部分事情但无法获取消息数据,我想将此代码从旧插件转换为一个较新的,使用 configurelaunch和onResume等方法。我可以收到关于消息的推送通知、前景和背景信息,但无法阅读。
class _ChatScreenState extends State<ChatScreen> {
@override
void initState() {
super.initState();
final fbm = FirebaseMessaging();
fbm.requestNotificationPermissions();
fbm.configure(onMessage: (msg) {
print(msg);
return;
}, onLaunch: (msg) {
print(msg);
return;
}, onResume: (msg) {
print(msg);
return;
});
}
到目前为止我做了什么 AndroidManifest.xml下添加
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="high_importance_channel" />
开启main.dart
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
print('Handling a background message ${message.messageId}');
}
Future <void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
这里是我想从服务器获取数据的地方
class _ChatScreenState extends State<ChatScreen> {
@override
void initState() {
FirebaseMessaging.instance
.getInitialMessage()
.then((RemoteMessage message) {
if (message != null) {
print(message);
}
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}');
}
});
});
super.initState();
}
应用在前台时调试
D/FLTFireMsgReceiver(15437): broadcast received for message
I/flutter (15437): Got a message whilst in the foreground!
I/flutter (15437): Message data: {}
I/flutter (15437): Message also contained a notification: Instance of 'RemoteNotification'
在背景上
D/FLTFireMsgReceiver(15437): broadcast received for message
W/FirebaseMessaging(15437): Missing Default Notification Channel metadata in AndroidManifest. Default value will be used.
I/flutter (15437): Handling a background message 0:1624718321445677%ba7e1d8bba7e1d8b
虽然通知文本和正文在通知窗口中很好,但在调试屏幕中无法获得相同的信息,它返回空。我的实现也正确吗?
【问题讨论】:
标签: flutter dart visual-studio-code google-cloud-functions