# #firebase #flutter #firebase-cloud-messaging
Вопрос:
Я хочу перейти на какую-то страницу, когда пользователь нажимает на уведомление. Я использую облачные сообщения и настройки flutter_local_notifications. Мне удалось сделать это с помощью уведомлений на переднем плане. Это было довольно просто. Я вставил тот же код в свой обработчик фоновых уведомлений, но он не сработал. Также я искал обратный вызов onTap для уведомлений, но не смог найти ничего, связанного с этим.
Вот мой обработчик фоновых уведомлений.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
var androidDetails = AndroidNotificationDetails(
"Channel ID",
"Shannonside",
"Shannonside Channel",
);
var iosDetails = IOSNotificationDetails();
var details = NotificationDetails(
android: androidDetails,
iOS: iosDetails,
);
if (message.notification != null) {
final title = message.notification.title;
final body = message.notification.body;
await NotificationService.localNotification.show(0, title, body, details);
}
if (message.data != null) {
var articleId = message.data['articleId'];
var category = message.data['category'];
if (articleId != null amp;amp; category != null) {
print("ArticleID: $articleId Category $category");
//@TODO Add navigation service and move to the article detail
NavigatorService.instance.navigateTo("/articlePage", arguments: {
"articleId": articleId.toString().toLowerCase(),
"category": category.toString().toLowerCase(),
});
}
}
}
Это не работает, даже моя функция не сработала. Также они заявили в документации, что это невозможно.
Поскольку обработчик выполняется в своей собственной изоляции вне контекста ваших приложений, невозможно обновить состояние приложения или выполнить какую-либо логику, влияющую на пользовательский интерфейс. Однако вы можете выполнять логику, такую как HTTP-запросы, операции ввода-вывода (обновление локального хранилища), взаимодействовать с другими плагинами и т.д.
Я знаю, что некоторые приложения делают это, они открывают какую-то страницу, когда вы нажимаете на уведомление. Как динамическая связь. Я хочу реализовать это в своем приложении.
Комментарии:
1. Проверьте это: pub.dev/пакеты/firebase_messaging
2. @Andrej Я уже читал документацию FlutterFire о сообщениях Firebase. Также вставил какую-то цитату из документации. Если вы думаете, что я что-то упускаю, дайте мне знать, а не отправляйте всю документацию.
Ответ №1:
Вы можете использовать функцию
FirebaseMessaging.instance
.getInitialMessage()
.then((RemoteMessage message) {
print("FirebaseMessaging.getInitialMessage");
if (message != null) {
Navigator.of(context).pushNamed('/call');
}
});
Эта функция запускается только в первый раз, когда приложение открывается, оно получает последнее сообщение