如何在应用程序关闭的情况下捕获通知中的点击以重定向 Firebase 消息传递中的特定页面 > 9.0

Luc*_*tos 1 push-notification firebase flutter flutter-dependencies

我正在使用 firebase 消息传递 9.0 版本,并希望用户在应用程序关闭时接收并单击通知时进入特定屏幕。

\n

我目前可以在应用程序打开或最小化的情况下进行管理,但我不知道如何在应用程序未打开时执行此操作。

\n
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {\n\n  await Firebase.initializeApp();\n  Model model = Model();\n  id = "sasassa;\n  Get.offNamed("$SCREEN_ROUTE",arguments: model);\n  Storage storage = Storage();\n  storage.setReceivedNotification(true);\n  print("teste notifica\xc3\xa7\xc3\xa3o recebida");\n\n}\n\nFirebaseMessaging.instance.getInitialMessage().then((message){\n    if (message != null){\n      Model model = Model();\n      id = "sasassa;\n      Get.offNamed("$SCREEN_ROUTE",arguments: model);\n    }\n  });\n\n  FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {\n    print("a");\n    storage.setReceivedNotification(true);\n    Model model = Model();\n    id = "sasassa;\n    Get.offNamed("$SCREEN_ROUTE",arguments: model);\n    //Navigator.pushNamed(context, '/events');\n  });\n\n\n  FirebaseMessaging.onMessage.listen((RemoteMessage message) async {\n    print("b");\n    storage.setReceivedNotification(true);\n    print("teste b $message");\n    String? corpo = message.notification?.body;\n    String? titulo = message.notification?.title;\n    String? image = message.notification?.android?.imageUrl;\n    //showMyDialog(titulo: titulo,corpo: corpo);\n\n    print("$corpo $titulo $image");\n\n  });\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试在backgroundHandler中使用共享首选项,但这样即使用户没有单击通知,也会发生重定向。

\n

有人知道如何通过点击特定通知来关闭应用程序来重定向吗?

\n

PS:我知道我需要在通知正文中发送数据,我只是想了解如何让flutter在9.0或更高版本中关闭应用程序时捕获点击。

\n

小智 5

使用FirebaseMessaging.instance.getInitialMessage() 方法获取消息

如果应用程序被关闭/终止

  FirebaseMessaging.instance
          .getInitialMessage()
          .then((RemoteMessage message) {
      print("FirebaseMessaging.getInitialMessage $message");
   });
Run Code Online (Sandbox Code Playgroud)

使用FirebaseMessaging.onMessageOpenedApp 方法获取消息

如果应用程序在后台

   FirebaseMessaging.onMessageOpenedApp
            .listen((RemoteMessage message) {
      print("FirebaseMessaging.onMessageOpenedApp $message");
   });
Run Code Online (Sandbox Code Playgroud)

使用FirebaseMessaging.onMessage 方法会收到一条消息

如果应用程序在前台

   FirebaseMessaging.onMessage
         .listen((RemoteMessage message) {
      print("FirebaseMessaging.onMessage $message");
   });
Run Code Online (Sandbox Code Playgroud)