#firebase #flutter #firebase-cloud-messaging #firebase-in-app-messaging
#firebase #flutter #firebase-cloud-messaging #firebase-in-app-messaging
Вопрос:
Я ищу эту функциональность:
Я ищу указатели. Не удалось найти какие-либо учебные пособия или пакеты, предоставляющие такую функциональность.
Спасибо за вашу помощь!
Ответ №1:
Пакет firebase_messaging не предоставляет никакого решения для кнопок действий. Вы можете получить свой data
в своем onMessageReceived()
методе. И вы можете создать свое собственное настраиваемое уведомление.
Комментарии:
1. Как мне создать собственное настраиваемое уведомление?
2. Об этом есть пакет flutter_local_notifications: pub.dev/packages/flutter_local_notifications
3. Как избежать отображения уведомлений от FCM, а также уведомлений, которые вы создаете с помощью плагина с действиями? Разве вы не получили бы повторяющиеся уведомления или два, если хотите показать только одно?
4. не добавляйте поле уведомления к данным уведомлений, которые вы отправляете из серверной части, просто добавьте поле данных
Ответ №2:
Существует пакет под названием awesome_notifications, который вы можете использовать для этой цели. для добавления пользовательской кнопки действия вы можете сделать так:
await AwesomeNotifications().createNotification(
content: NotificationContent(
id: 0,
channelKey: 'basic_channel',
title: 'Simple title',
body: 'Simple body ',
),
actionButtons: [
NotificationActionButton(
key: 'accept',
label: 'Accept',
),
NotificationActionButton(
key: 'cancel',
label: 'Cancel',
),
],
);
И для выполнения действий на основе действий вы должны прослушать этот поток:
AwesomeNotifications().actionStream.listen((event) {
if (event.buttonKeyInput == 'cancel') //...
else // ...
});
Вы можете использовать эту библиотеку, когда приложение запущено и запущено, но когда приложение завершено, вы не можете фактически использовать это, и вам лучше использовать уведомления FCM, а затем открыть приложение и затем предпринять действия в зависимости от типа уведомления.
Ответ №3:
** Для добавления кнопки внутри фонового уведомления ** Добавьте AndroidNotificationAction внутри AndroidNotificationDetails внутри firebase код фонового обработчика приведен ниже
void showFlutterNotification(RemoteMessage message) {
RemoteNotification? notification = message.notification;
AndroidNotification? android = message.notification?.android;
if (notification != null amp;amp; android != null amp;amp; !kIsWeb) {
flutterLocalNotificationsPlugin.show(
notification.hashCode,
notification.title,
notification.body,
NotificationDetails(
android: AndroidNotificationDetails(
channel.id,
channel.name,
channelDescription: channel.description,
// TODO add a proper drawable resource to android, for now using
// one that already exists in example app.
icon: 'launch_background',
actions: <AndroidNotificationAction>[
AndroidNotificationAction('id_1', 'Action 1'),
AndroidNotificationAction('id_2', 'Action 2'),
AndroidNotificationAction('id_3', 'Action 3'),
],
),
),
);
}
}