Firebase Cloud Messaging-Client-App in Flutter einrichten

So richten Sie einen FCM-Client in Flutter ein:

Plattformspezifische Einrichtung und Anforderungen

Einige der erforderlichen Schritte hängen von der Plattform ab, auf die Sie Ihre Anzeigen ausrichten.

iOS+

App-Funktionen in Xcode aktivieren

Bevor Ihre Anwendung Nachrichten empfangen kann, müssen Sie Push-Benachrichtigungen und Hintergrundmodi in Ihrem Xcode-Projekt aktivieren.

  1. Öffnen Sie den Xcode-Projektbereich (ios/Runner.xcworkspace).
  2. Aktivieren Sie Push-Benachrichtigungen.
  3. Aktivieren Sie die Modi für die Hintergrundausführung Abruf im Hintergrund und Remote-Benachrichtigungen.

APNs-Authentifizierungsschlüssel hochladen

Bevor Sie FCM verwenden können, müssen Sie Ihr APNs-Zertifikat in Firebase hochladen. Wenn Sie noch kein APNs-Zertifikat haben, erstellen Sie eines im Apple Developer Member Center.

  1. Klicken Sie in der Firebase Console in Ihrem Projekt auf das Zahnradsymbol, dann auf Projekteinstellungen und dann auf den Tab Cloud Messaging.
  2. Wählen Sie die Schaltfläche Zertifikat hochladen für Ihr Entwicklungszertifikat, Ihr Produktionszertifikat oder beides aus. Mindestens eine Angabe ist erforderlich.
  3. Wählen Sie für jedes Zertifikat die .p12-Datei aus und geben Sie gegebenenfalls das Passwort ein. Achten Sie darauf, dass die Paket-ID für dieses Zertifikat mit der Paket-ID Ihrer App übereinstimmt. Wählen Sie Speichern aus.

Method Swizzling

Wenn Sie das FCM-Flutter-Plug-in auf Apple-Geräten verwenden möchten, dürfen Sie das Methoden-Swizzling nicht deaktivieren. Das Swapping ist erforderlich. Ohne es funktionieren wichtige Firebase-Funktionen wie die FCM-Token-Verarbeitung nicht richtig.

Android

Google Play-Dienste

Für FCM-Clients sind Geräte mit Android 4.4 oder höher erforderlich, auf denen auch Google Play-Dienste installiert sind, oder ein Emulator mit Android 4.4 und Google APIs. Sie sind nicht darauf beschränkt, Ihre Android-Apps über den Google Play Store bereitzustellen.

Apps, die auf dem Play Services SDK basieren, sollten vor dem Zugriff auf Funktionen der Google Play-Dienste immer prüfen, ob auf dem Gerät ein kompatibles APK für die Google Play-Dienste installiert ist. Wir empfehlen, dies an zwei Stellen zu tun: in der onCreate()-Methode der Hauptaktivität und in der onResume()-Methode. Die Prüfung in onCreate() sorgt dafür, dass die App ohne erfolgreiche Prüfung nicht verwendet werden kann. Durch die Prüfung in onResume() wird sichergestellt, dass die Prüfung auch dann durchgeführt wird, wenn der Nutzer auf andere Weise, z. B. über die Schaltfläche „Zurück“, zur laufenden App zurückkehrt.

Wenn auf dem Gerät keine kompatible Version der Google Play-Dienste installiert ist, kann Ihre App GoogleApiAvailability.makeGooglePlayServicesAvailable() aufrufen, damit Nutzer die Google Play-Dienste aus dem Play Store herunterladen können.

Web

Web-Anmeldedaten mit FCM konfigurieren

Die FCM-Weboberfläche verwendet Web-Anmeldedaten, sogenannte „VAPID-Schlüssel“ (Voluntary Application Server Identification), um Sendeanfragen an unterstützte Web-Push-Dienste zu autorisieren. Wenn Sie Push-Benachrichtigungen für Ihre App abonnieren möchten, müssen Sie Ihrem Firebase-Projekt ein Schlüsselpaar zuordnen. Sie können entweder ein neues Schlüsselpaar generieren oder ein vorhandenes Schlüsselpaar über die Firebase Console importieren.

Neues Schlüsselpaar generieren
  1. Öffnen Sie in der Firebase Console den Tab Cloud Messaging im Bereich Einstellungen und scrollen Sie zum Bereich Webkonfiguration.

  2. Klicken Sie auf dem Tab Web-Push-Zertifikate auf Schlüsselpaar generieren. In der Console wird eine Meldung angezeigt, dass das Schlüsselpaar generiert wurde. Außerdem werden der öffentliche Schlüsselstring und das Datum des Hinzufügens angezeigt.

Vorhandenes Schlüsselpaar importieren

Wenn Sie bereits ein Schlüsselpaar haben, das Sie für Ihre Web-App verwenden, können Sie es in FCM importieren, damit Sie Ihre vorhandenen Web-App-Instanzen über FCM APIs erreichen können. Zum Importieren von Schlüsseln benötigen Sie Zugriff auf das Firebase-Projekt auf Inhaberebene. Importieren Sie Ihren vorhandenen öffentlichen und privaten Schlüssel im Base64-Format, das für URLs sicher ist:

  1. Öffnen Sie in der Firebase Console den Tab Cloud Messaging im Bereich Einstellungen und scrollen Sie zum Bereich Webkonfiguration.

  2. Suchen Sie auf dem Tab Web Push-Zertifikate den Linktext „Vorhandenes Schlüsselpaar importieren“ und wählen Sie ihn aus.

  3. Geben Sie im Dialogfeld Schlüsselpaar importieren Ihre öffentlichen und privaten Schlüssel in die entsprechenden Felder ein und klicken Sie auf Importieren. In der Konsole werden der öffentliche Schlüsselstring und das Datum der Hinzufügung angezeigt.

Weitere Informationen zum Format der Schlüssel und zum Generieren finden Sie unter Anwendungsserverschlüssel.

FCM-Plug-in installieren

  1. Installieren und initialisieren Sie die Firebase-Plug-ins für Flutter, falls noch nicht geschehen.

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

    flutter pub add firebase_messaging
    
  3. Erstellen Sie anschließend Ihre Flutter-Anwendung neu:

    flutter run
    

Auf das Registrierungstoken zugreifen

Wenn Sie eine Nachricht an ein bestimmtes Gerät senden möchten, benötigen Sie das Registrierungstoken dieses Geräts. Da Sie das Token in ein Feld in der Benachrichtigungskonsole eingeben müssen, um diese Anleitung abzuschließen, sollten Sie es kopieren oder sicher speichern, nachdem Sie es abgerufen haben.

Rufen Sie getToken() auf, um das aktuelle Registrierungstoken für eine App-Instanz abzurufen. Wenn die Berechtigung zum Senden von Benachrichtigungen nicht erteilt wurde, wird der Nutzer über diese Methode um die Berechtigung zum Senden von Benachrichtigungen gebeten. Andernfalls wird ein Token zurückgegeben oder die Zukunft wird aufgrund eines Fehlers abgelehnt.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

Übermittle deinen VAPID-öffentlichen Schlüssel auf Webplattformen an getToken():

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Wenn du benachrichtigt werden möchtest, wenn das Token aktualisiert wird, abonniere den onTokenRefresh-Stream:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Automatische Initialisierung verhindern

Wenn ein FCM-Registrierungstoken generiert wird, lädt die Bibliothek die Kennung und die Konfigurationsdaten in Firebase hoch. Wenn Sie die automatische Tokengenerierung verhindern möchten, deaktivieren Sie die automatische Initialisierung zur Buildzeit.

iOS

Fügen Sie auf iOS-Geräten einen Metadatenwert zu Info.plist hinzu:

FirebaseMessagingAutoInitEnabled = NO

Android

Deaktivieren Sie unter Android die Analytics-Erfassung und die automatische FCM-Initialisierung. Sie müssen beides deaktivieren. Fügen Sie dazu die folgenden Metadatenwerte zu AndroidManifest.xml hinzu:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

FCM-Auto-Init bei der Laufzeit wieder aktivieren

Wenn Sie die automatische Initialisierung für eine bestimmte App-Instanz aktivieren möchten, rufen Sie setAutoInitEnabled() auf:

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Dieser Wert bleibt nach dem Festlegen auch nach App-Neustarts erhalten.

Nächste Schritte

Nachdem die Client-App eingerichtet ist, können Sie mit dem Benachrichtigungs-Composer Downstream-Nachrichten senden. Weitere Informationen finden Sie unter Testnachricht an eine App im Hintergrund senden.

Wenn Sie Ihrer App weitere, erweiterte Funktionen hinzufügen möchten, benötigen Sie eine Serverimplementierung.

Gehen Sie dann in Ihrem App-Client so vor: