Richten Sie eine Firebase Cloud Messaging-Client-App auf Flutter ein

Befolgen Sie diese Schritte, um einen FCM-Client auf Flutter einzurichten.

Plattformspezifische Einrichtung und Anforderungen

Einige der erforderlichen Schritte hängen von der Plattform ab, auf die Sie abzielen.

iOS+

Aktivieren Sie App-Funktionen in Xcode

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

  1. Öffnen Sie Ihren Xcode-Projektarbeitsbereich ( ios/Runner.xcworkspace ).
  2. Aktivieren Sie Push-Benachrichtigungen .
  3. Aktivieren Sie die Hintergrundausführungsmodi „Hintergrundabruf“ und „Remote-Benachrichtigungen“ .

Laden Sie Ihren APNs-Authentifizierungsschlüssel hoch

Bevor Sie FCM verwenden, laden Sie Ihr APNs-Zertifikat auf Firebase hoch. 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-Konsole das Zahnradsymbol aus, wählen Sie Projekteinstellungen und dann die Registerkarte Cloud-Messaging aus.
  2. Wählen Sie die Schaltfläche „Zertifikat hochladen“ für Ihr Entwicklungszertifikat, Ihr Produktionszertifikat oder beides. Mindestens eine ist erforderlich.
  3. Wählen Sie für jedes Zertifikat die .p12-Datei aus und geben Sie ggf. das Passwort ein. Stellen Sie sicher, dass die Bundle-ID für dieses Zertifikat mit der Bundle-ID Ihrer App übereinstimmt. Wählen Sie Speichern aus .

Methode schwenken

Um das FCM Flutter-Plugin auf Apple-Geräten zu verwenden, dürfen Sie das Methoden-Swizzling nicht deaktivieren. Swizzling ist erforderlich, und ohne es funktionieren wichtige Firebase-Funktionen wie die FCM-Token-Verarbeitung nicht ordnungsgemäß.

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. Beachten Sie, dass Sie Ihre Android-Apps nicht nur über den Google Play Store bereitstellen können.

Apps, die auf dem Play Services SDK basieren, sollten das Gerät immer auf ein kompatibles Google Play Services APK überprüfen, bevor sie auf die Funktionen der Google Play Services zugreifen. Es wird empfohlen, dies an zwei Stellen zu tun: in der onCreate() Methode der Hauptaktivität und in ihrer onResume() Methode. Die Prüfung in onCreate() stellt sicher, dass die App ohne eine erfolgreiche Prüfung nicht verwendet werden kann. Die Prüfung in onResume() stellt sicher, dass die Prüfung weiterhin durchgeführt wird, wenn der Benutzer auf andere Weise zur laufenden App zurückkehrt, beispielsweise über die Schaltfläche „Zurück“.

Wenn das Gerät nicht über eine kompatible Version der Google Play-Dienste verfügt, kann Ihre App GoogleApiAvailability.makeGooglePlayServicesAvailable() aufrufen, um Benutzern das Herunterladen von Google Play-Diensten aus dem Play Store zu ermöglichen.

Netz

Konfigurieren Sie Web-Anmeldeinformationen mit FCM

Die FCM-Webschnittstelle verwendet Web-Anmeldeinformationen, die als „Voluntary Application Server Identification“ oder „VAPID“-Schlüssel bezeichnet werden, um Sendeanforderungen an unterstützte Web-Push-Dienste zu autorisieren. Um Ihre App für Push-Benachrichtigungen zu abonnieren, müssen Sie Ihrem Firebase-Projekt ein Schlüsselpaar zuordnen. Sie können entweder ein neues Schlüsselpaar generieren oder Ihr vorhandenes Schlüsselpaar über die Firebase-Konsole importieren.

Erzeugen Sie ein neues Schlüsselpaar
  1. Öffnen Sie die Registerkarte „Cloud Messaging“ im Bereich „Einstellungen“ der Firebase-Konsole und scrollen Sie zum Abschnitt „Webkonfiguration“ .

  2. Klicken Sie auf der Registerkarte „Web-Push-Zertifikate“ auf „Schlüsselpaar generieren“ . Die Konsole zeigt einen Hinweis an, dass das Schlüsselpaar generiert wurde, sowie die Zeichenfolge des öffentlichen Schlüssels und das Datum, an dem es hinzugefügt wurde.

Importieren Sie ein vorhandenes Schlüsselpaar

Wenn Sie über ein vorhandenes Schlüsselpaar verfügen, das Sie bereits mit Ihrer Web-App verwenden, können Sie es in FCM importieren, sodass Sie über FCM-APIs auf Ihre vorhandenen Web-App-Instanzen zugreifen können. Zum Importieren von Schlüsseln benötigen Sie Zugriff auf Eigentümerebene auf das Firebase-Projekt. Importieren Sie Ihren vorhandenen öffentlichen und privaten Schlüssel in Base64-URL-sicher codierter Form:

  1. Öffnen Sie die Registerkarte „Cloud Messaging“ im Bereich „Einstellungen“ der Firebase-Konsole und scrollen Sie zum Abschnitt „Webkonfiguration“ .

  2. Suchen Sie auf der Registerkarte „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“ . Die Konsole zeigt die Zeichenfolge des öffentlichen Schlüssels und das hinzugefügte Datum an.

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

Installieren Sie das FCM-Plugin

  1. Installieren und initialisieren Sie die Firebase-Plugins 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.

// 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");

Um benachrichtigt zu werden, 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.
    });

Verhindern Sie die automatische Initialisierung

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

iOS

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

FirebaseMessagingAutoInitEnabled = NO

Android

Deaktivieren Sie unter Android die Analytics-Erfassung und die automatische FCM-Initialisierung (Sie müssen beide deaktivieren), indem Sie diese Metadatenwerte zu Ihrer 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" />

Aktivieren Sie die automatische FCM-Initialisierung zur Laufzeit erneut

Um Auto-Init für eine bestimmte App-Instanz zu aktivieren, rufen Sie setAutoInitEnabled() auf:

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Dieser Wert bleibt über App-Neustarts hinweg bestehen, sobald er festgelegt wurde.

Nächste Schritte

Nachdem die Client-App eingerichtet ist, können Sie mit dem Notifications Composer mit dem Versenden von Downstream-Nachrichten beginnen. Siehe Senden einer Testnachricht an eine Hintergrund-App .

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

Dann in Ihrem App-Client: