我想在应用程序运行时点击通知时使用通知数据执行某些操作。我如何在颤振中实现这个

问题描述 投票:0回答:1

我已经设置了 firebase 推送通知,并且正在我的 flutter 应用程序中接收通知。我就是这样处理的。

Future<void> init() async {
    if (Platform.isIOS) {
      iosInit();
    } else {
      await androidInit();
    }

    getInitialMsg();

    //when app in background
    FirebaseMessaging.onMessageOpenedApp.listen((msg) {
      handleRoutingOnNotificationTap(msg.data);
    });

    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      showNotification(message);
    });
  }

我在 runApp() 之前调用此 init()。

我使用 flutter_local_notifications 插件在前台显示通知。因为默认情况下,当应用程序处于前台时收到通知时,它不会显示通知。后台系统默认显示通知。我不手动显示。

void showNotification(RemoteMessage msg) {
    RemoteNotification? notification = msg.notification;
    if (notification == null) return;
    FlutterLocalNotificationsPlugin().show(
      ...,
      payload: msg.data.toString(),
    );
  }

我在后台和前台都收到通知。我想使用通知数据有效负载实现一些导航逻辑。在当前的实现中,仅当应用程序在后台时通过点击通知(启动应用程序)来启动应用程序时,这才有效。我可以使用这个监听器>

FirebaseMessaging.onMessageOpenedApp.listen((msg) {
  handleRoutingOnNotificationTap(msg.data);
});

应用程序运行时点击通知时没有监听器?

所以总而言之,我想要实现的是当应用程序运行(前台)并且用户点击它时接收通知>应该处理一些导航逻辑。我如何实现这个?

flutter firebase firebase-cloud-messaging
1个回答
0
投票

找到答案了。我们可以使用flutterLocalNotificationsPlugin的onDidReceiveNotificationResponse。我们可以在

show(...,payload: jsonEncode(msg.data))
中传递一个有效负载字符串(jsonencoded)来显示通知(并传递有效负载),并且我们可以在 onDidReceiveNotificationResponse 回调中处理此有效负载。

`flutterLocalNotificationsPlugin.initialize(initializationSettings,
    onDidReceiveNotificationResponse: onDidReceiveNotificationResponse);`
© www.soinside.com 2019 - 2024. All rights reserved.