Senden Sie eine Testnachricht an eine Hintergrund-App

Um mit FCM zu beginnen, entwickeln Sie den einfachsten Anwendungsfall: Senden einer Testbenachrichtigungsnachricht vom Notifications Composer an ein Entwicklungsgerät, wenn die App im Hintergrund auf dem Gerät ausgeführt wird. Auf dieser Seite werden alle Schritte aufgeführt, um dies zu erreichen, von der Einrichtung bis zur Überprüfung. Möglicherweise werden auch Schritte abgedeckt, die Sie bereits abgeschlossen haben, wenn Sie eine Flutter-App für FCM eingerichtet haben.

Installieren Sie das FCM-Plugin

  1. Installieren und initialisieren Sie die Firebase SDKs für Flutter, falls Sie dies noch nicht getan haben.

  2. Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plugin zu installieren:

    flutter pub add firebase_messaging
    
  3. Wenn Sie fertig sind, erstellen Sie Ihre Flutter-Anwendung neu:

    flutter run
    

Greifen Sie auf das Registrierungstoken zu

Um eine Nachricht an ein bestimmtes Gerät zu senden, müssen Sie das Registrierungstoken dieses Geräts kennen. Da Sie das Token in ein Feld in der Benachrichtigungskonsole eingeben müssen, um dieses Tutorial abzuschließen, stellen Sie sicher, dass Sie das Token kopieren oder nach dem Abrufen sicher aufbewahren.

Um das aktuelle Registrierungstoken für eine App-Instanz abzurufen, rufen Sie getToken() auf. Wenn keine Benachrichtigungsberechtigung erteilt wurde, fragt diese Methode den Benutzer nach Benachrichtigungsberechtigungen. Andernfalls wird ein Token zurückgegeben oder der Future aufgrund eines Fehlers abgelehnt.

final fcmToken = await FirebaseMessaging.instance.getToken();

Senden Sie eine Testbenachrichtigung

  1. Installieren Sie die App und führen Sie sie auf dem Zielgerät aus. Auf Apple-Geräten müssen Sie die Anfrage um Erlaubnis zum Empfang von Remote-Benachrichtigungen akzeptieren.

  2. Stellen Sie sicher, dass die App auf dem Gerät im Hintergrund läuft.

  3. Öffnen Sie in der Firebase-Konsole die Seite „Messaging“ .

  4. Wenn dies Ihre erste Nachricht ist, wählen Sie Ihre erste Kampagne erstellen aus.

    1. Wählen Sie Firebase-Benachrichtigungsnachrichten und dann Erstellen aus.
  5. Andernfalls wählen Sie auf der Registerkarte „Kampagnen“ die Option „Neue Kampagne“ und dann „Benachrichtigungen“ aus.

  6. Geben Sie den Nachrichtentext ein. Alle anderen Felder sind optional.

  7. Wählen Sie im rechten Bereich Testnachricht senden aus .

  8. Geben Sie im Feld mit der Bezeichnung „FCM-Registrierungstoken hinzufügen“ das Registrierungstoken ein, das Sie in einem vorherigen Abschnitt dieses Handbuchs erhalten haben.

  9. Wählen Sie Testen aus.

Nachdem Sie Test ausgewählt haben, sollte das Ziel-Clientgerät (mit der App im Hintergrund) die Benachrichtigung erhalten.

Einblicke in die Nachrichtenzustellung an Ihre App erhalten Sie im FCM-Berichts-Dashboard , das die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten sowie Daten zu „Impressionen“ (von Benutzern gesehene Benachrichtigungen) für Android-Apps aufzeichnet.

Umgang mit Interaktion

Wenn Benutzer auf eine Benachrichtigung tippen, ist das Standardverhalten sowohl auf Android als auch auf iOS das Öffnen der Anwendung. Wird die Anwendung beendet, wird sie gestartet, läuft sie im Hintergrund, wird sie in den Vordergrund gebracht.

Abhängig vom Inhalt einer Benachrichtigung möchten Sie möglicherweise die Interaktion des Benutzers beim Öffnen der Anwendung verwalten. Wenn beispielsweise eine neue Chat-Nachricht über eine Benachrichtigung gesendet wird und der Benutzer sie auswählt, möchten Sie möglicherweise die spezifische Konversation öffnen, wenn die Anwendung geöffnet wird.

Das firebase-messaging Paket bietet zwei Möglichkeiten, diese Interaktion zu handhaben:

  1. getInitialMessage() : Wenn die Anwendung in einem beendeten Zustand geöffnet wird, gibt diese Methode einen Future zurück, der eine RemoteMessage enthält. Sobald die RemoteMessage verbraucht ist, wird sie entfernt.
  2. onMessageOpenedApp : Ein Stream , der eine RemoteMessage sendet, wenn die Anwendung aus einem Hintergrundzustand geöffnet wird.

Um Ihren Benutzern ein reibungsloses Erlebnis zu gewährleisten, sollten Sie beide Szenarien bewältigen. Das folgende Codebeispiel zeigt, wie dies erreicht werden kann:

class Application extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _Application();
}

class _Application extends State<Application> {
  // In this example, suppose that all messages contain a data field with the key 'type'.
  Future<void> setupInteractedMessage() async {
    // Get any messages which caused the application to open from
    // a terminated state.
    RemoteMessage? initialMessage =
        await FirebaseMessaging.instance.getInitialMessage();

    // If the message also contains a data property with a "type" of "chat",
    // navigate to a chat screen
    if (initialMessage != null) {
      _handleMessage(initialMessage);
    }

    // Also handle any interaction when the app is in the background via a
    // Stream listener
    FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
  }

  void _handleMessage(RemoteMessage message) {
    if (message.data['type'] == 'chat') {
      Navigator.pushNamed(context, '/chat',
        arguments: ChatArguments(message),
      );
    }
  }

  @override
  void initState() {
    super.initState();

    // Run code required to handle interacted messages in an async function
    // as initState() must not be async
    setupInteractedMessage();
  }

  @override
  Widget build(BuildContext context) {
    return Text("...");
  }
}

Wie Sie mit der Interaktion umgehen, hängt von der Einrichtung Ihrer Anwendung ab. Das obige Beispiel zeigt ein einfaches Beispiel für die Verwendung eines StatefulWidget .

Nächste Schritte

Senden Sie Nachrichten an Apps im Vordergrund

Sobald Sie erfolgreich Benachrichtigungsnachrichten gesendet haben, während sich Ihre App im Hintergrund befindet, lesen Sie „Empfangen von Nachrichten in einer Flutter-App“, um mit dem Senden an Apps im Vordergrund zu beginnen.

Gehen Sie über Benachrichtigungsnachrichten hinaus

Um Ihrer App weiteres, erweitertes Verhalten hinzuzufügen, benötigen Sie eine Serverimplementierung .

Dann in Ihrem App-Client: