当应用程序被终止时,我无法通过flutter中的通知路由到特定页面

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

我试图在单击通知时转到某个页面。当应用程序处于后台或前台时它工作正常,但当应用程序被杀死时它不起作用。

当应用程序被终止时,它会打开应用程序,但不会转到通知数据中定义的路线。

需要快速解决方案

FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message)=>
    NotificationPop().onOpenApp(message, navigatorKey));
flutter dart flutter-dependencies flutter-test
3个回答
1
投票

当您想在应用程序被终止时从通知(也称为 RemoteMessage)中导航或捕获数据时,您需要使用 Firebase 包的以下功能:

FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage? message) {
      if(message != null && message.data['title'] == 'SomeTitle') {
        //Navigate to a page
      }
    });

将上述函数放入所需页面的 init 函数中,每当您的应用导航到该页面时,上述函数就会被调用。 我假设您已将 firebase 正确集成到您的应用程序中。


0
投票

Firebase 包提供了不同的方法来处理不同的场景,即终止应用程序、后台应用程序和打开应用程序。

您必须实现

getInitialMessage()
方法来处理终止的应用程序中的通知。

 FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage? message) {
   //YourCode  
  });

您还可以检查其他方法来管理差异场景,例如重复通知:

 FirebaseMessaging.onMessage.listen((message) //YourCode  });

0
投票

这是简单的解决方案

对处于终止/终止状态的应用程序使用 FirebaseMessaging.instance.getInitialMessage() 代码将是

  await FirebaseMessaging.instance
    .getInitialMessage()
    .then(_firebaseMessagingBackgroundHandler);
下面的

_firebaseMessagingBackgroundHandler。此处使用上下文无关导航

    Future<void> _firebaseMessagingBackgroundHandler(
    RemoteMessage? message,
  ) async {
    if (message == null) return;
    print('Title ${message.notification?.title}');
    print('Body ${message.notification?.body}');
    print('Payload ${message.data}');

    await servicelocator<AppRouter>()
        .push(NotificationLandingViewRoute(isInbox: true));
  
  }
© www.soinside.com 2019 - 2024. All rights reserved.