【发布时间】:2020-06-20 16:11:41
【问题描述】:
点击背景 FCM通知时是否可以导航到指定路径?
我创建了一个 Top-Level 函数并将其添加到导航器路径,但它不起作用,当单击背景通知时,它只是打开应用程序
我猜我发现了一个问题
现在,我将
fcm配置从home page更改为splash screen。 前景没有导航到页面,我认为这是因为启动画面不再可用。当我点击通知消息时,它只是打开了应用程序。
FCM 配置
onBackgroundMessage: backgroundMessageHandler
顶级函数
Future<dynamic> backgroundMessageHandler(Map<String, dynamic> message) {
if (message.containsKey('data')) {
getIt<NavigationService>().navigateTo('/${message['data']['screen']}');
}
}
有效载荷
const payload: admin.messaging.MessagingPayload = {
notification:{
title: `New Enquiry`,
body:`${customerName} published to ${subName}`,
badge: '1',
sound: 'default'
},
data: {
click_action: `FLUTTER_NOTIFICATION_CLICK`,
sound: `default`,
status: `chat`,
screen: `homePage`
}
}
main.dart
GetIt getIt = GetIt.instance;
void main() {
setupLocator();
runApp(MyApp());
}
MaterialApp
return MaterialApp(
navigatorKey: NavigationService().navigatorKey,
onGenerateRoute: Router.generateRoute,
);
NavigationService 和 setupLocator
class NavigationService {
final GlobalKey<NavigatorState> navigatorKey =
new GlobalKey<NavigatorState>();
Future<dynamic> navigateTo(String routeName) {
return navigatorKey.currentState.pushNamed(routeName);
}
}
void setupLocator() {
getIt.registerLazySingleton(() => NavigationService());
}
【问题讨论】:
-
通知负载是否包含
click_action字段? -
@HasilT 是的,我将有效负载添加到此处
-
我也有同样的问题,还没找到解决办法
-
您找到解决方案了吗?我也面临同样的问题。
标签: firebase flutter dart background firebase-cloud-messaging