在应用程序打开时接收FCM通知



我在Android Studio中编写了一个测试Flutter应用程序来接收来自Firebase的推送通知。完成后,我通过AVD将其安装在一个新的模拟器上,并测试了在应用程序终止时收到推送通知的情况。效果很好。当应用程序在后台打开时。又一次成功了。但奇怪的是,当应用程序打开时,推送通知似乎正在传递到设备,因为我在发布推送通知后获得D/FLTFireMsgReceiver( 6020): broadcast received for message,但它从未显示任何内容,我得到

W/FirebaseMessaging( 6020): Unable to log event: analytics library is missing
W/FirebaseMessaging( 6020): Unable to log event: analytics library is missing

我试过:

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('A new onMessage event was published!');})

我甚至没有看到打印行

我做错了什么会导致通知只在应用程序不在前台运行时才工作?

将这些库添加到pubspec中。并使用下面的代码

firebase_analytics: ^ 8.1.2firebase_messaging: ^ 10.0.0

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FirebaseMessaging.onBackgroundMessage(_messageHandler);
runApp(MyApp());
}

initialize() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
FirebaseMessaging.onMessage.listen((RemoteMessage event) {
print("message recieved");
print(event.notification!.body);
});
FirebaseMessaging.onMessageOpenedApp.listen((message) {
print('Message clicked!');
});

FirebaseMessaging.onMessage.listen((RemoteMessage event) {
print("message recieved");
print(event.notification!.body);
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Notification"),
content: Text(event.notification!.body!),
actions: [
TextButton(
child: Text("Ok"),
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
});
});
}
@override
void initState() {
super.initState();
initialize();
}

最新更新