【问题标题】:Issues receiving FCM notifications while app is open应用打开时接收 FCM 通知的问题
【发布时间】:2021-11-07 07:21:12
【问题描述】:

我在 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!');})

我什至没有得到打印线。

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

【问题讨论】:

  • firebase.google.com/docs/cloud-messaging/android/… - 有不同的行为取决于应用状态和通知类型。
  • 在 Flutter 中,FirebaseMessaging.onMessage 返回一个 Stream,当 Flutter 实例在前台时接收到传入的 FCM 有效负载时调用该 Stream。所以当应用程序在前台时,我应该在这里看到一些动作。

标签: android flutter push-notification firebase-cloud-messaging


【解决方案1】:

在 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();
  }

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 2022-06-15
    • 2018-08-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2021-09-08
    • 2023-02-25
    • 1970-01-01
    相关资源
    最近更新 更多