Flutter应用被杀死后点击通知无法跳转指定页面的问题求助
解决应用杀死后Firebase通知无法跳转指定页面的问题
核心原因
FirebaseMessaging.onMessageOpenedApp 仅监听应用从后台唤醒的场景,当应用被完全杀死后点击通知启动时,这个监听不会触发,因此你的路由跳转逻辑不会执行。
快速修复方案
在应用初始化阶段添加对初始启动消息的监听,覆盖应用被杀死后由通知唤醒的场景:
- 在
main函数中补充FirebaseMessaging.getInitialMessage()的调用:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 处理应用被杀死后,点击通知启动的情况 RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage(); if (initialMessage != null) { NotificationPop().onOpenApp(initialMessage, navigatorKey); } // 保留原有后台唤醒的监听逻辑 FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) => NotificationPop().onOpenApp(message, navigatorKey)); runApp(MyApp()); }
- 确认
NotificationPop().onOpenApp中的路由跳转逻辑可用,比如使用navigatorKey.currentState?.pushNamed()这类可靠的跳转方式,避免因上下文未初始化导致跳转失败。
关键说明
getInitialMessage()仅在应用由通知从杀死状态唤醒时返回消息,正常启动应用时返回null。- 必须确保
Firebase.initializeApp()在调用getInitialMessage()前执行完成,否则会触发初始化异常。
内容的提问来源于stack exchange,提问作者Asad ur Rehman Khan
相关产品推荐
相关产品推荐

