1. Einführung
Zuletzt aktualisiert:6. Januar 2020
Firebase Cloud Messaging (FCM) ist eine plattformübergreifende Messaging-Lösung, mit der Sie zuverlässig und kostenlos Nachrichten senden können.
Mit FCM können Sie eine Client-App benachrichtigen, dass neue E-Mails oder andere Daten zur Synchronisierung verfügbar sind. Sie können Benachrichtigungen senden, um die erneute Interaktion und Bindung von Nutzern zu fördern. Für Anwendungsfälle wie Instant Messaging kann eine Nachricht eine Nutzlast von bis zu 4 KB an eine Client-App übertragen.
Wie funktioniert das?
Eine FCM-Implementierung umfasst zwei Hauptkomponenten zum Senden und Empfangen:
- Eine vertrauenswürdige Umgebung wie Cloud Functions for Firebase oder ein Anwendungsserver, auf dem Nachrichten erstellt, ausgerichtet und gesendet werden können.
- Eine iOS-, Android- oder Web-Clientanwendung (JavaScript), die Nachrichten über den entsprechenden plattformspezifischen Transportdienst empfängt.
Architekturübersicht FCM
FCM basiert auf den folgenden Komponenten, die Nachrichten erstellen, transportieren und empfangen:
- Tools zum Schreiben oder Erstellen von Nachrichtenanfragen. Notifications Composer bietet eine GUI-basierte Option zum Erstellen von Benachrichtigungsanfragen. Für eine vollständige Automatisierung und Unterstützung für alle Nachrichtentypen müssen Sie Nachrichtenanfragen in einer vertrauenswürdigen Serverumgebung erstellen, die das Firebase Admin SDK oder die FCM-Serverprotokolle unterstützt. Diese Umgebung kann Cloud Functions for Firebase, Google App Engine oder Ihr eigener Anwendungsserver sein.
- Das FCM-Back-End, das (unter anderem) Nachrichtenanfragen akzeptiert, ein Fanout von Nachrichten über Themen durchführt und Nachrichtenmetadaten wie die Nachrichten-ID generiert.
- Eine Transportschicht auf Plattformebene, die die Nachricht an das Zielgerät weiterleitet, die Nachrichtenzustellung verarbeitet und gegebenenfalls eine plattformspezifische Konfiguration anwendet. Diese Transportschicht umfasst:
- Android Transport Layer (ATL) für Android-Geräte mit Google Play-Diensten
- Apple Push Notification Service (APNs) für iOS-Geräte
- Web-Push-Protokoll für Web-Apps
- Das FCM SDK auf dem Gerät des Nutzers, auf dem die Benachrichtigung angezeigt oder die Nachricht entsprechend dem Vorder-/Hintergrundstatus der App und der relevanten App-Logik verarbeitet wird.
Inhalt
In diesem Codelab fügen Sie einer iOS-Beispiel-App mit FCM Push-Benachrichtigungen hinzu.
Aufgaben in diesem Lab
- Einen Nutzer für Push-Nachrichten abonnieren und abmelden
- Umgang mit eingehenden Push-Nachrichten
- Benachrichtigungen anzeigen
- Auf Benachrichtigungsklicks reagieren
Voraussetzungen
- Xcode 11.0 oder höher
- CocoaPods 1.9.0 oder höher
- Apple-Entwicklerkonto
- Ein physisches iOS-Gerät zum Ausführen der App
- Grundkenntnisse in Swift
2. Einrichtung
Beispielcode herunterladen
In diesem Codelab erstellen Sie Ihre eigene Test-App. Wenn Sie sich die vorhandene Beispiel-App ansehen und sie ausführen möchten, können Sie den Schnellstart-Beispielcode herunterladen.
Es gibt zwei Möglichkeiten, das Beispiel abzurufen:
- Klonen Sie das Git-Repository:
$ git clone https://github.com/firebase/quickstart-ios.git
- Laden Sie die ZIP-Datei herunter:
Wenn Sie die Quelle als ZIP-Datei herunterladen, erhalten Sie beim Entpacken den Stammordner quickstart-ios
.
Neue App erstellen
Erstellen Sie mithilfe der folgenden Schritte Ihre eigene Test-App (die folgenden Schritte sind in XCode 12.3 enthalten):
- Öffnen Sie XCode und wählen Sie Create a new Xcode project (Neues Xcode-Projekt erstellen) aus.
- Wählen Sie App aus und klicken Sie auf Weiter.
- Geben Sie einen Produktnamen ein (z. B. MessagingExample)
- Wählen Sie Team aus. Wenn Sie noch kein Team erstellt haben, konfigurieren Sie es im Apple-Entwicklerkonto.
- Geben Sie eine Organisations-ID ein (z. B.
com.
your-name
) - Geben Sie eine Bundle-ID ein (z. B.
com.
your-name
.MessagingExample
sollte sie unter allen iOS-Apps eindeutig sein. - Wähle im Drop-down-Menü Schnittstelle die Option Storyboard aus.
- Wählen Sie im Drop-down-Menü Lebenszyklus die Option UIKit App Delegate aus.
- Wählen Sie unter Sprache die Option Swift aus.
- Klicken Sie auf Weiter.
Sie benötigen die Bundle-ID, wenn Sie einen APN-Schlüssel erstellen und Ihre App in Ihrem Firebase-Projekt registrieren.
3. APNs konfigurieren
Authentifizierungsschlüssel erstellen
In diesem Abschnitt wird beschrieben, wie Sie einen Authentifizierungsschlüssel für eine App-ID generieren, die für Push-Benachrichtigungen aktiviert ist. Wenn Sie bereits einen Schlüssel haben, können Sie diesen verwenden, anstatt einen neuen zu generieren.
So erstellen Sie einen Authentifizierungsschlüssel:
- Gehen Sie in Ihrem Entwicklerkonto zu Zertifikate, IDs und Profile und gehen Sie zu Keys.
- Klicken Sie rechts oben auf die Schaltfläche Hinzufügen (+).
- Geben Sie eine Beschreibung für den APNs-Authentifizierungsschlüssel ein
- Klicken Sie unter „Key Services“ (Schlüsseldienste) das Kästchen „APNs“ an und dann auf Weiter.
- Klicken Sie auf Registrieren und dann auf Herunterladen. Bewahren Sie Ihren Schlüssel an einem sicheren Ort auf. Dies ist ein einmaliger Download und der Schlüssel kann später nicht mehr abgerufen werden.
App-ID erstellen
Die App-ID ist eine Kennung, die eine App eindeutig identifiziert. Konventionsgemäß wird sie durch eine umgekehrte Domain dargestellt.
- Gehen Sie zum Apple Developer Member Center und melden Sie sich an.
- Gehen Sie zu Zertifikate, Kennungen und Profile.
- Gehen Sie zu Identifiers (Kennungen).
- Klicken Sie auf die Schaltfläche +, um eine neue App-ID zu erstellen.
- Wählen Sie das Optionsfeld App-IDs aus und klicken Sie auf Weiter.
- Wählen Sie App aus und klicken Sie auf Weiter.
- So erstellen Sie die neue App-ID:
- Geben Sie einen Namen für die App-ID ein.
- Geben Sie eine Team-ID ein. Dieser Wert muss mit der Team-ID auf dem Tab „Mitgliedschaft“ übereinstimmen.
- Wählen Sie im Abschnitt App-ID-Suffix die Option Explizite App-ID aus und geben Sie dann Ihre Bundle-ID ein.
- Achten Sie darauf, dass im Abschnitt App Services (App-Dienste) die Option Push-Benachrichtigungen aktiviert ist.
- Klicken Sie auf Weiter und prüfen Sie, ob Ihre Eingabe korrekt ist:
- Der Wert für Identifier sollte mit der Verkettung der Werte der Team-ID und der Bundle-ID übereinstimmen.
- Push-Benachrichtigungen sollten konfigurierbar sein.
- Klicken Sie auf Registrieren, um die App-ID zu erstellen.
Profil erstellen
Wenn du deine App während der Entwicklung testen möchtest, benötigst du ein Entwicklungsprofil, um deine Geräte für die Ausführung einer App zu autorisieren, die noch nicht im App Store veröffentlicht ist.
- Gehen Sie zum Apple Developer Member Center und melden Sie sich an.
- Gehen Sie zu Zertifikate, Kennungen und Profile.
- Wählen Sie im Drop-down-Menü oben links iOS, tvOS, watchOS aus, falls noch nicht ausgewählt, und gehen Sie zu Profile.
- Klicken Sie auf die Schaltfläche +, um ein neues Profil zu erstellen.
- Wählen Sie als Typ des Bereitstellungsprofils iOS-App-Entwicklung aus und klicken Sie auf Weiter.
- Wählen Sie im Drop-down-Menü die App-ID aus, die Sie verwenden möchten, und klicken Sie auf Weiter.
- Wählen Sie das iOS-Entwicklungszertifikat der App-ID aus, die Sie im vorherigen Schritt ausgewählt haben, und klicken Sie auf Weiter.
- Wählen Sie die iOS-Geräte aus, die Sie in das Bereitstellungsprofil aufnehmen möchten, und klicken Sie dann auf Weiter. Wählen Sie alle Geräte aus, die Sie für den Test verwenden möchten.
- Geben Sie einen Namen für dieses Bereitstellungsprofil ein (z.B. MessagingExampleProfile) und klicken Sie dann auf Generate (Generieren).
- Klicken Sie auf Herunterladen, um das Bereitstellungsprofil auf Ihrem Mac zu speichern.
- Doppelklicken Sie auf die Datei für das Nutzerverwaltungsprofil, um sie zu installieren.
4. Firebase zu Ihrem iOS-Projekt hinzufügen
Firebase-Projekt erstellen
Bevor Sie Firebase zu Ihrer iOS-App hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrer iOS-App herzustellen. Weitere Informationen zu Firebase-Projekten finden Sie unter Firebase-Projekte verstehen.
- Klicken Sie in der Firebase Console auf Projekt hinzufügen und wählen Sie dann einen Projektnamen aus oder geben Sie ihn ein.
Wenn Sie bereits ein GCP-Projekt (Google Cloud Platform) haben, können Sie das Projekt aus dem Drop-down-Menü auswählen, um ihm Firebase-Ressourcen hinzuzufügen.
- Optional: Wenn Sie ein neues Projekt erstellen, können Sie die Projekt-ID bearbeiten.
Firebase weist Ihrem Firebase-Projekt automatisch eine eindeutige ID zu. Unter „Informationen zu Firebase-Projekten“ erfahren Sie, wie Firebase die Projekt-ID verwendet.
- Klicken Sie auf Weiter.
- Richten Sie Google Analytics für Ihr Projekt ein, um die folgenden Firebase-Produkte optimal zu nutzen:
- Firebase Crashlytics
- Firebase Predictions
- Firebase Cloud Messaging
- Firebase In-App-Messaging
- Firebase Remote Config
- Firebase A/B Testing
Wenn Sie dazu aufgefordert werden, wählen Sie aus, ob Sie ein vorhandenes Google Analytics-Konto verwenden oder ein neues Konto erstellen möchten. Wenn Sie ein neues Konto erstellen möchten, wählen Sie den Speicherort für Analytics-Berichte aus und akzeptieren Sie dann die Einstellungen für die Datenfreigabe und die Google Analytics-Nutzungsbedingungen für Ihr Projekt.
- Klicken Sie auf Projekt erstellen. Falls Sie ein vorhandenes GCP-Projekt verwenden, klicken Sie auf Firebase hinzufügen.
Firebase stellt automatisch Ressourcen für Ihr Firebase-Projekt bereit. Nach Abschluss des Vorgangs werden Sie zur Übersichtsseite Ihres Firebase-Projekts in der Firebase Console weitergeleitet.
App bei Firebase registrieren
Nachdem Sie ein Firebase-Projekt erstellt haben, können Sie ihm Ihre iOS-App hinzufügen.
Unter Informationen zu Firebase-Projekten finden Sie weitere Informationen zu Best Practices und Überlegungen zum Hinzufügen von Apps zu einem Firebase-Projekt sowie zum Umgang mit mehreren Build-Varianten.
- Öffnen Sie die Firebase Console.
- Klicken Sie in der Mitte der Projektübersichtsseite auf das iOS-Symbol, um den Einrichtungsworkflow zu starten.
Wenn Sie Ihrem Firebase-Projekt bereits eine App hinzugefügt haben, klicken Sie auf App hinzufügen, um die Plattformoptionen aufzurufen.
- Geben Sie die Bundle-ID Ihrer App in das Feld iOS-Bundle-ID ein.
- Optional: Geben Sie weitere App-Informationen ein: App-Alias und App Store-ID.
- Klicken Sie auf App registrieren.
Firebase-Konfigurationsdatei hinzufügen
- Klicken Sie auf GoogleService-Info.plist herunterladen, um die Firebase iOS-Konfigurationsdatei (
GoogleService-Info.plist
) herunterzuladen. - Verschieben Sie Ihre Konfigurationsdatei in das Stammverzeichnis Ihres Xcode-Projekts. Wenn Sie dazu aufgefordert werden, wählen Sie aus, dass die Konfigurationsdatei allen Zielen hinzugefügt werden soll.
Wenn Sie in Ihrem Projekt mehrere Bundle-IDs haben, müssen Sie jede Bundle-ID in der Firebase Console einer registrierten App zuordnen, damit jede App eine eigene GoogleService-Info.plist
-Datei haben kann.
Schließen Sie XCode.
Ihrer App Firebase SDKs hinzufügen
Wir empfehlen, die Firebase-Bibliotheken mit CocoaPods zu installieren. Wenn Sie CocoaPods jedoch nicht verwenden möchten, können Sie die SDK-Frameworks direkt einbinden oder die Betaversion von Swift Package Manager verwenden.
- Erstellen Sie eine Podfile-Datei, falls Sie noch keine haben. Wenn Sie das Schnellstart-Beispiel verwenden, sind das Xcode-Projekt und die Podfile (mit Pods) bereits vorhanden.
$ cd MessagingExample $ pod init
- Fügen Sie der Podfile-Datei die Firebase-Pods hinzu, die Sie in Ihrer Anwendung verwenden möchten.
Sie können Ihrer iOS-App jedes der unterstützten Firebase-Produkte hinzufügen.
Im Schnellstart-Beispiel wurden die SDKs für Google Analytics und Firebase Cloud Messaging hinzugefügt.
# Add the Firebase pod for Google Analytics pod 'Firebase/Analytics' # Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'
- Installieren Sie die Pods und öffnen Sie dann die Datei
.xcworkspace
, um das Projekt in Xcode anzusehen:
$ pod install
- Öffnen Sie
MessagingExample.xcworkspace
und klicken Sie in der Firebase Console auf Weiter.
Firebase in Ihrer App initialisieren
Sie müssen Ihrer Anwendung Firebase-Initialisierungscode hinzufügen.
Importieren Sie das Firebase-Modul und konfigurieren Sie eine freigegebene Instanz. Im Schnellstart-Beispiel wurde das Firebase-Modul bereits importiert.
- Importieren Sie das Firebase-Modul in Ihr
UIApplicationDelegate
:
AppDelegate.swift
import UIKit
import Firebase // Add this line
- Konfigurieren Sie eine freigegebene FirebaseApp-Instanz, in der Regel in der
application:didFinishLaunchingWithOptions:
-Methode Ihrer App:
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure() // Add this line
return true
}
- Klicken Sie in der Firebase Console auf Weiter.
- Ihrer App werden Firebase SDKs hinzugefügt. Klicken Sie auf Weiter zur Konsole.
5. FCM-Client konfigurieren
APNs-Authentifizierungsschlüssel hochladen
Laden Sie Ihren APNs-Authentifizierungsschlüssel in Firebase hoch.
- Klicken Sie in Ihrem Projekt in der Firebase Console auf das Zahnradsymbol, wählen Sie Projekteinstellungen und dann den Tab Cloud Messaging aus.
- Klicken Sie im Abschnitt APNs-Authentifizierungsschlüssel unter iOS-App-Konfiguration auf die Schaltfläche Hochladen.
- Gehen Sie zum Speicherort Ihres Schlüssels, wählen Sie ihn aus und klicken Sie auf Öffnen. Fügen Sie die Schlüssel-ID für den Schlüssel hinzu. Sie finden sie im Apple Developer Member Center unter Certificates, Identifiers &Profiles (Zertifikate, Kennungen und Profile) und klicken Sie auf Hochladen.
Für Remote-Benachrichtigungen registrieren
Registrieren Sie Ihre App entweder beim Start oder an der gewünschten Stelle im Anwendungsablauf für Remote-Benachrichtigungen.
Im Schnellstart-Beispiel wurde registerForRemoteNotifications
bereits hinzugefügt.
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
// [START register for remote notifications]
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
// [END register for remote notifications]
return true
}
Weisen Sie die Delegat-Property von UNUserNotificationCenter
zu, indem Sie diese Zeilen am Ende von AppDelegate.swift hinzufügen.
AppDelegate.swift
@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate {
// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
// Print full message.
print(userInfo)
// Change this to your preferred presentation option
completionHandler([[.alert, .sound]])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
// Print full message.
print(userInfo)
completionHandler()
}
}
Nachrichtendelegierter festlegen
Um Registrierungstokens zu erhalten, implementiere das Messaging-Delegat-Protokoll und lege das delegate
-Attribut von FIRMessaging
fest, nachdem du [FIRApp configure]
aufgerufen hast. Wenn Ihr Anwendungsdelegat beispielsweise dem Messaging-Delegate-Protokoll entspricht, können Sie den Delegat in application:didFinishLaunchingWithOptions:
auf sich selbst setzen (im Schnellstart-Beispiel ist er bereits festgelegt).
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self // Add this line
// [START register for remote notifications]
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
// [END register for remote notifications]
return true
}
Weisen Sie die Delegat-Property von FIRMessaging
zu, indem Sie diese Zeilen am Ende von AppDelegate.swift hinzufügen.
AppDelegate.swift
extension AppDelegate : MessagingDelegate {
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
print("Firebase registration token: \(String(describing: fcmToken))")
let dataDict:[String: String] = ["token": fcmToken ?? ""]
NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
}
}
Funktionen hinzufügen
Sie haben die Funktion für Push-Benachrichtigungen im Abschnitt zum Erstellen einer App-ID hinzugefügt, müssen sie aber auch zu XCode hinzufügen. Gehen Sie dazu folgendermaßen vor (die folgenden Schritte sind in XCode 12.3 enthalten):
- Klicken Sie im Navigatorbereich auf den Projektnamen.
- Klicken Sie auf Signieren und Funktionen.
- Klicken Sie auf + Funktion.
- Doppelklicken Sie auf Hintergrundmodi.
- Klicken Sie noch einmal auf + Funktion.
- Klicke doppelt auf Push-Benachrichtigungen.
- Klicke in den Abschnitten Hintergrundmodi das Kästchen Remote-Benachrichtigungen an.
6. Benachrichtigung senden
So senden Sie eine Testnachricht:
- Installieren Sie die App auf dem Zielgerät und führen Sie sie aus. Du musst die Berechtigungsanfrage für den Empfang von Remote-Benachrichtigungen akzeptieren.
- Rufen Sie das Registrierungstoken aus dem XCode-Log ab.
- Achte darauf, dass die App auf dem Gerät im Hintergrund ausgeführt wird.
- Öffnen Sie Mitteilungen und wählen Sie Neue Benachrichtigung aus.
- Geben Sie den Nachrichtentext ein.
- Wählen Sie Testnachricht senden aus.
- Geben Sie in das Feld FCM-Registrierungstoken hinzufügen das Registrierungstoken ein, das Sie in Schritt 2 erhalten haben.
- Klicken Sie auf Testen.
Nachdem Sie auf Testen geklickt haben, sollte die Benachrichtigung im Benachrichtigungscenter auf dem Zielclientgerät (mit der App im Hintergrund) eingehen.
Informationen zur Zustellung von Nachrichten an Ihre App finden Sie im FCM-Berichts-Dashboard. Dort wird die Anzahl der Nachrichten aufgezeichnet, die auf iOS- und Android-Geräten gesendet und geöffnet wurden.
7. Glückwunsch
Die Testnachricht wurde erfolgreich gesendet.
In FCM gibt es viele weitere Funktionen und Konfigurationen, z. B. Themenabos.
Weitere Informationen finden Sie im offiziellen Entwicklerdokument.
Was liegt als Nächstes an?
Sehen Sie sich einige dieser Codelabs an.