como redirecionar usuários para uma página no clique de notificação

Jan 06 2021

Estou trabalhando no aplicativo flutter e na web com o servidor Firebase. Eu envio notificações usando funções de nuvem. Quero redirecionar os usuários para uma página específica quando eles recebem uma notificação e clicam nela. Por enquanto, meu aplicativo mostra a 'página inicial' quando recebo uma notificação e clico nela. Como posso redirecionar para 'solicitar página de detalhes' em vez de 'página inicial' quando os usuários recebem uma notificação e clicam nela?

Respostas

Shanto Jan 06 2021 at 21:19

Adicione isso dentro do arquivo AndroidManifest

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

Dentro dos dados de notificação, adicione click_action e seu parâmetro necessário para navegar para uma página específica

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

Quando o usuário clicar na notificação, um desses três eventos será acionado, dependendo do estado do seu aplicativo.

_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);
  },
);

Recupere os dados de notificação da mensagem e navegue até a página desejada.

MuhammadTameemRafay Jan 06 2021 at 22:53

SecondScreen é o nome da classe de outra tela.

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

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

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