как перенаправить пользователей на страницу при нажатии на уведомление

Jan 06 2021

Я работаю над приложением Flutter и в Интернете с сервером firebase. Я отправляю уведомления с помощью облачных функций. Я хочу перенаправлять пользователей на определенную страницу, когда они получают уведомление и нажимают на нее. На данный момент мое приложение показывает «домашнюю страницу», когда я получаю уведомление и нажимаю на нее. Как я могу перенаправить на «страницу сведений о запросе» вместо «домашнюю страницу», когда пользователи получают уведомление и нажимают на него?

Ответы

Shanto Jan 06 2021 at 21:19

Добавьте это в файл AndroidManifest

<intent-filter>
  <action android:name="FLUTTER_NOTIFICATION_CLICK" />
  <category android:name="android.intent.category.DEFAULT" />

Данные внутреннего уведомления, добавьте click_action и требуемый параметр для перехода на определенную страницу

'data': {
     'click_action': 'FLUTTER_NOTIFICATION_CLICK',
     'product_id': 1,
     ...
   },

Когда пользователь нажимает на уведомление, одно из этих трех событий запускается в зависимости от состояния вашего приложения.

_firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) async {
    print("onMessage: $message"); _showItemDialog(message); }, onBackgroundMessage: myBackgroundMessageHandler, onLaunch: (Map<String, dynamic> message) async { print("onLaunch: $message");
    _navigateToItemDetail(message);
  },
  onResume: (Map<String, dynamic> message) async {
    print("onResume: $message");
    _navigateToItemDetail(message);
  },
);

Получите данные уведомления из сообщения и перейдите на нужную страницу.

MuhammadTameemRafay Jan 06 2021 at 22:53

SecondScreen - это имя класса другого экрана.

_firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {

         Navigator.push(context,
                MaterialPageRoute(builder: (BuildContext context) {
              return SecondScreen(
                message,
              );
            }));

        print("onMessage: $message");
        _showItemDialog(message);
      },
     
    );