如何从后台打开我的应用程序并导航到接收通知消息的页面?

Posted

技术标签:

【中文标题】如何从后台打开我的应用程序并导航到接收通知消息的页面?【英文标题】:How to open my app from background and navigate to a page on receiving a notification message in flutter? 【发布时间】:2021-08-23 20:54:10 【问题描述】:

我需要在收到通知消息时自动打开应用程序。 Flutter 有可能吗?

下面是处理后台消息的代码,它可以工作。

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async 
  await Firebase.initializeApp();
  print('Handling a background message $message.messageId');


void main() async 
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  ......
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyApp()
    )
  );

我需要的是我有一个单独的页面,需要在执行该特定功能时弹出(当应用程序在后台时)。谁能帮我解决这个问题!提前致谢

【问题讨论】:

您找到解决方案了吗?我也面临同样的问题。 根据我的研究,android 不允许应用程序在没有任何用户交互的情况下自动打开。如果你有最新的 android 你会注意到,即使是电话也只会弹出一个通知,并且只有在点击应用程序时才会打开。 当用户点击应用程序终止时可能将用户带到特定屏幕的通知时?我正在使用 firebase_messaging: ^10.0.8 . 我认为这个答案会对你有所帮助! ***.com/a/48405551/12131806 谢谢。但在这个答案链接中,他们使用的是旧版本的 firebase_messaging。 【参考方案1】:
    await _firebaseMessaging.subscribeToTopic('topic name');
    _firebaseMessaging.configure
    (
        
        // The onMessage function triggers when the notification is 
        received while we are running the app.
        onMessage: (message) async
        
            setState(()
            
                messageTitle = message["notification"]["title"];
                messageDescription = message["notification"]["description"];
                notificationAlert = "New Notification Alert";
            );

        ,
        // The onResume function triggers when we receive the notification alert in the device notification bar and opens the app through the push notification itself. In this case, the app can be running in the background or not running at all.
        onResume: (message) async
        
            print("ON RESUME");

            setState(() 
            
                messageTitle = message["data"]["title"];
                messageDescription = message["notification"]["description"];
                notificationAlert = "Application opened from Notification";
            );
        ,
        onLaunch: (Map<String, dynamic> message) async // Called when app is terminated
        
            print("onLaunch: $message");

            var data = message["data"];

            print(data);

            // Navigator.pushNamed(context, "details");
        
    );

在此代码中,onResume 函数将帮助您从后台运行应用程序,以便您可以在 onResume 中编写代码并导航到您指定的屏幕。

【讨论】:

如果我没记错的话,这是针对旧版本的 firebase 消息传递。在当前版本中,后台消息功能完成了该部分,但不同之处在于后台消息是在 void main 之外完成的,因此应用程序无法打开。

以上是关于如何从后台打开我的应用程序并导航到接收通知消息的页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序在后台时收到的通知中保存数据

当应用程序在后台并接收推送通知点击应用程序崩溃时

android 如何实现后台时用通知栏显示有新的消息,当在前台时不显示通知

由于我的应用程序的后台通知导致三星设备上经常崩溃的消息

Flutter Firebase 消息传递 - 应用打开时未显示推送通知

应用程序推送通知 - 收到并导航到屏幕 - 应用程序何时关闭?