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 abzielen.

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 Arbeitsbereich Ihres Xcode-Projekts (ios/Runner.xcworkspace).
  2. Push-Benachrichtigungen aktivieren
  3. Aktivieren Sie die Hintergrundabruf- und Remote-Benachrichtigungen-Hintergrundausführungsmodi.

APNs-Authentifizierungsschlüssel hochladen

Bevor Sie FCM verwenden, 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. Wählen Sie in Ihrem Projekt in der Firebase Console das Zahnradsymbol und dann Projekteinstellungen und den Tab Cloud Messaging aus.
  2. Klicken Sie für Ihr Entwicklerzertifikat, Ihr Produktionszertifikat oder beides auf die Schaltfläche Zertifikat hochladen. Mindestens eine Angabe ist erforderlich.
  3. Wählen Sie für jedes Zertifikat die .p12-Datei aus und geben Sie das Passwort an, falls erforderlich. 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 Method Swizzling nicht deaktivieren. Swizzling ist erforderlich. Ohne Swizzling 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 mit Google APIs. Sie können Ihre Android-Apps auch über andere Kanäle als den Google Play Store bereitstellen.

Apps, die auf das Play Services SDK angewiesen sind, sollten immer prüfen, ob auf dem Gerät ein kompatibles Google Play-Dienste-APK vorhanden ist, bevor sie auf Funktionen der Google Play-Dienste zugreifen. Es wird empfohlen, dies an zwei Stellen zu tun: in der Methode onCreate() der Hauptaktivität und in der Methode onResume(). Die Prüfung in onCreate() sorgt dafür, dass die App nicht ohne erfolgreiche Prüfung verwendet werden kann. Die Prüfung in onResume() sorgt dafür, dass die Prüfung auch dann durchgeführt wird, wenn der Nutzer auf andere Weise zur laufenden App zurückkehrt, z. B. über die Zurück-Schaltfläche.

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 Webanmeldedaten namens „Voluntary Application Server Identification“ (VAPID), um Sendeanfragen an unterstützte Web-Push-Dienste zu autorisieren. Damit Ihre App Push-Benachrichtigungen abonnieren kann, müssen Sie ein Schlüsselpaar mit Ihrem Firebase-Projekt verknüpfen. Sie können entweder ein neues Schlüsselpaar generieren oder Ihr 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 Konsole wird eine Benachrichtigung angezeigt, dass das Schlüsselpaar generiert wurde, sowie der öffentliche Schlüsselstring und das Datum, an dem er hinzugefügt wurde.

Vorhandenes Schlüsselpaar importieren

Wenn Sie bereits ein Schlüsselpaar haben, das Sie mit Ihrer 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 in Base64-URL-sicherer codierter Form:

  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 nach dem Linktext „Vorhandenes Schlüsselpaar importieren“ und wählen Sie ihn aus.

  3. Geben Sie im Dialogfeld Schlüsselpaar importieren Ihren ö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 Hinzufügedatum angezeigt.

Weitere Informationen zum Format der Schlüssel und zum Generieren der Schlüssel finden Sie unter Anwendungsserver-Schlü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 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 mit dieser Methode danach gefragt. Andernfalls wird ein Token zurückgegeben oder das Future 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...
}

Übergeben Sie auf Webplattformen Ihren öffentlichen VAPID-Schlüssel an getToken():

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

Wenn Sie benachrichtigt werden möchten, wenn das Token aktualisiert wird, abonnieren Sie 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 Generierung von Tokens verhindern möchten, deaktivieren Sie die automatische Initialisierung zur Build-Zeit.

iOS

Fügen Sie unter iOS einen Metadatenwert zu Ihrem Info.plist hinzu:

FirebaseMessagingAutoInitEnabled = NO

Android

Deaktivieren Sie auf Android die Analytics-Erfassung und die automatische FCM-Initialisierung (Sie müssen beides deaktivieren), indem Sie diese Metadatenwerte zu Ihrem AndroidManifest.xml hinzufügen:

<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 zur Laufzeit wieder aktivieren

Rufen Sie setAutoInitEnabled() auf, um die automatische Initialisierung für eine bestimmte App-Instanz zu aktivieren:

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Dieser Wert bleibt nach dem Festlegen auch nach dem Neustart der App erhalten.

Nächste Schritte

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

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

Gehen Sie dann in Ihrem App-Client so vor: