come reindirizzare gli utenti a una pagina al clic di notifica

Jan 06 2021

Sto lavorando su flutter app e web con server firebase. Invio notifiche utilizzando le funzioni cloud. Desidero reindirizzare gli utenti a una pagina specifica quando ricevono una notifica e fanno clic su di essa. Per ora, la mia app mostra la "home page" quando ricevo una notifica e faccio clic su di essa. Come posso reindirizzare alla "pagina dei dettagli della richiesta" invece che alla "home page" quando gli utenti ricevono una notifica e fanno clic su di essa?

Risposte

Shanto Jan 06 2021 at 21:19

Aggiungilo all'interno del file AndroidManifest

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

All'interno dei dati di notifica, aggiungi click_action e il parametro richiesto per la navigazione a una pagina specifica

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

Quando l'utente fa clic sulla notifica, uno di questi tre eventi si attiverà a seconda dello stato dell'app.

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

Recupera i dati di notifica dal messaggio e vai alla pagina desiderata.

MuhammadTameemRafay Jan 06 2021 at 22:53

SecondScreen è il nome della classe di un altro schermo.

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

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

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