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.
- Öffnen Sie den Xcode-Projektbereich (
ios/Runner.xcworkspace
). - Aktivieren Sie Push-Benachrichtigungen.
- Aktivieren Sie die Ausführungsmodi Hintergrundabruf 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.
- Klicken Sie in Ihrem Projekt in der Firebase Console auf das Zahnradsymbol, wählen Sie Projekteinstellungen und dann den Tab Cloud Messaging aus.
- Wählen Sie die Schaltfläche Zertifikat hochladen für Ihr Entwicklungszertifikat, Ihr Produktionszertifikat oder beides aus. Mindestens eine Angabe ist erforderlich.
- 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 Bundle-ID Ihrer App übereinstimmt. Klicken Sie auf Speichern.
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 Verarbeitung von FCM-Tokens nicht richtig.
Android
Google Play-Dienste
FCM-Clients benötigen Geräte mit Android 4.4 oder höher, auf denen auch Google Play-Dienste installiert sind, oder einen Emulator mit Android 4.4 und Google APIs. Sie sind nicht darauf beschränkt, Ihre Android-Apps über den Google Play Store bereitzustellen.
Apps, für die das Play Services SDK erforderlich ist, sollten vor dem Zugriff auf die Funktionen der Google Play-Dienste immer auf dem Gerät prüfen, ob ein kompatibles APK für die Google Play-Dienste vorliegt. 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 das Check-in onResume()
wird sichergestellt, dass die Prüfung auch dann durchgeführt wird, wenn der Nutzer auf andere Weise zur laufenden App zurückkehrt, z. B. über die Schaltfläche „Zurück“.
Wenn auf dem Gerät keine kompatible Version der Google Play-Dienste installiert ist, kann deine App GoogleApiAvailability.makeGooglePlayServicesAvailable()
aufrufen, damit Nutzer 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
Öffnen Sie in der Firebase Console den Tab Cloud Messaging im Bereich Einstellungen und scrollen Sie zum Bereich Webkonfiguration.
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 Inhaberebene für das Firebase-Projekt. Importieren Sie Ihren vorhandenen öffentlichen und privaten Schlüssel in base64-URL-verschlüsselter Form:
Öffnen Sie in der Firebase Console den Tab Cloud Messaging im Bereich Einstellungen und scrollen Sie zum Bereich Webkonfiguration.
Klicken Sie auf dem Tab Web Push-Zertifikate auf den Linktext „Vorhandenes Schlüsselpaar importieren“.
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 Console werden der String des öffentlichen Schlüssels und das Hinzufügungsdatum angezeigt.
Weitere Informationen zum Format der Schlüssel und wie sie generiert werden, finden Sie unter Anwendungsserverschlüssel.
FCM-Plug-in installieren
Installieren und initialisieren Sie die Firebase-Plug-ins für Flutter, falls noch nicht geschehen.
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plug-in zu installieren:
flutter pub add firebase_messaging
Erstellen Sie anschließend Ihre Flutter-Anwendung neu:
flutter run
Auf 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 Anwendungsinstanz 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 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 unter iOS einen Metadatenwert zu Info.plist
hinzu:
FirebaseMessagingAutoInitEnabled = NO
Android
Auf Android-Geräten müssen Sie die Analytics-Erfassung und die automatische FCM-Initialisierung 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 Neustart der App 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: