首页 > 解决方案 > 应用打开时接收 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!');})

我什至没有得到打印线。

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

标签: androidflutterpush-notificationfirebase-cloud-messaging

解决方案


在 pubspec.yaml 上添加这些库并使用下面的代码

firebase_analytics:^8.1.2 firebase_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();
  }

推荐阅读