Befolgen Sie diese Schritte, um einen FCM-Client auf Flutter einzurichten.
Plattformspezifisches Setup 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 Ihren Xcode-Projektarbeitsbereich (
ios/Runner.xcworkspace
). - Aktivieren Sie Push-Benachrichtigungen .
- Aktivieren Sie die Ausführungsmodi Hintergrundabruf und Remote-Benachrichtigungen im Hintergrund.
Laden Sie Ihren APNs-Authentifizierungsschlüssel hoch
Bevor Sie FCM verwenden, laden Sie Ihr APNs-Zertifikat in Firebase hoch. Wenn Sie noch kein APNs-Zertifikat haben, erstellen Sie eines im Apple Developer Member Center .
- Wählen Sie in Ihrem Projekt in der Firebase-Konsole das Zahnradsymbol aus, wählen Sie Projekteinstellungen und dann die Registerkarte Cloud-Messaging aus.
- Wählen Sie die Schaltfläche Zertifikat hochladen für Ihr Entwicklungszertifikat, Ihr Produktionszertifikat oder beide aus. Mindestens einer ist erforderlich.
- Wählen Sie für jedes Zertifikat die .p12-Datei aus und geben Sie ggf. das Kennwort ein. Stellen Sie sicher, dass die Paket-ID für dieses Zertifikat mit der Paket-ID Ihrer App übereinstimmt. Wählen Sie Speichern aus .
Methodenwechsel
Um das FCM-Flutter-Plug-in 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
FCM-Clients erfordern Geräte mit Android 4.4 oder höher, auf denen auch Google Play-Dienste installiert sind, oder einen Emulator mit Android 4.4 mit Google-APIs. Beachten Sie, dass Sie nicht darauf beschränkt sind, Ihre Android-Apps über den Google Play Store bereitzustellen.
Apps, die auf das Play Services SDK angewiesen sind, sollten das Gerät immer auf ein kompatibles APK für Google Play-Dienste überprüfen, bevor sie auf die Funktionen der Google Play-Dienste zugreifen. Es wird empfohlen, dies an zwei Stellen zu tun: in der onCreate()
Methode der Hauptaktivität und in ihrer onResume()
Methode. Der Check in onCreate()
stellt sicher, dass die App ohne erfolgreiche Prüfung nicht verwendet werden kann. Die Überprüfung in onResume()
stellt sicher, dass die Überprüfung dennoch durchgeführt wird, wenn der Benutzer auf andere Weise zur laufenden App zurückkehrt, z. B. über die Zurück-Schaltfläche.
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 Webanmeldeinformationen, 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.
Generieren Sie ein neues Schlüsselpaar
Öffnen Sie die Registerkarte „Cloud Messaging“ im Bereich „Einstellungen“ der Firebase-Konsole und scrollen Sie zum Abschnitt „Webkonfiguration“ .
Klicken Sie auf der Registerkarte Web-Push-Zertifikate auf Schlüsselpaar generieren . Die Konsole zeigt einen Hinweis an, dass das Schlüsselpaar generiert wurde, und zeigt die öffentliche Schlüsselzeichenfolge und das Datum an, an dem sie hinzugefügt wurde.
Importieren Sie ein vorhandenes Schlüsselpaar
Wenn Sie ein vorhandenes Schlüsselpaar haben, das Sie bereits mit Ihrer Webanwendung verwenden, können Sie es in FCM importieren, sodass Sie Ihre vorhandenen Webanwendungsinstanzen über FCM-APIs erreichen 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-sicherer codierter Form:
Öffnen Sie die Registerkarte „Cloud Messaging“ im Bereich „Einstellungen“ der Firebase-Konsole und scrollen Sie zum Abschnitt „Webkonfiguration“ .
Suchen Sie auf der Registerkarte Web-Push-Zertifikate nach dem Linktext „importieren Sie ein vorhandenes Schlüsselpaar“ und wählen Sie ihn aus.
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 Datum an, an dem sie hinzugefügt wurde.
Weitere Informationen zum Format der Schlüssel und wie sie generiert werden, finden Sie unter Anwendungsserverschlüssel .
Installieren Sie das FCM-Plugin
Installieren und initialisieren Sie die Firebase-Plugins für Flutter, falls Sie dies noch nicht getan haben.
Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plugin zu installieren:
flutter pub add firebase_messaging
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 sicher speichern, nachdem Sie es abgerufen haben.
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 gibt es einen Token zurück oder lehnt das Future aufgrund eines Fehlers ab.
final fcmToken = await FirebaseMessaging.instance.getToken();
Ü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.
});
Automatische Initialisierung verhindern
Wenn ein FCM-Registrierungstoken generiert wird, lädt die Bibliothek die Kennung und die Konfigurationsdaten in Firebase hoch. Wenn Sie es vorziehen, die automatische Generierung von Token zu verhindern, deaktivieren Sie die automatische Initialisierung zur Build-Zeit.
iOS
Fügen Sie unter iOS Ihrer Info.plist
einen Metadatenwert 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 nach dem Festlegen über App-Neustarts hinweg bestehen.
Nächste Schritte
Nachdem die Client-App eingerichtet wurde, können Sie mit dem Senden von Downstream-Nachrichten mit dem Benachrichtigungs-Composer beginnen. Siehe Senden einer Testnachricht an eine App im Hintergrund .
Um Ihrer App andere, fortgeschrittenere Verhaltensweisen hinzuzufügen, benötigen Sie eine Serverimplementierung .
Dann in Ihrem App-Client: