cómo redirigir a los usuarios a una página al hacer clic en una notificación

Jan 06 2021

Estoy trabajando en la aplicación Flutter y en la web con el servidor Firebase. Envío notificaciones usando funciones en la nube. Quiero redirigir a los usuarios a una página específica cuando reciben una notificación y hacen clic en ella. Por ahora, mi aplicación muestra 'página de inicio' cuando recibo una notificación y hago clic en ella. ¿Cómo puedo redirigir a la 'página de solicitud de detalles' en lugar de la 'página de inicio' cuando los usuarios reciben una notificación y hacen clic en ella?

Respuestas

Shanto Jan 06 2021 at 21:19

Agregue esto dentro del archivo AndroidManifest

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

Dentro de los datos de notificación, agregue click_action y su parámetro requerido para navegar a una página específica

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

Cuando el usuario hace clic en la notificación, uno de estos tres eventos se activará según el estado de su aplicación.

_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 los datos de notificación del mensaje y navegue a la página deseada.

MuhammadTameemRafay Jan 06 2021 at 22:53

SecondScreen es el nombre de clase de otra pantalla.

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

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

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