Um mit FCM zu beginnen, entwickeln Sie den einfachsten Anwendungsfall: Senden einer Testbenachrichtigungsnachricht vom Notifications Composer an ein Entwicklungsgerät, wenn die App im Hintergrund auf dem Gerät ausgeführt wird. Auf dieser Seite werden alle Schritte aufgeführt, um dies zu erreichen, von der Einrichtung bis zur Überprüfung. Möglicherweise werden auch Schritte abgedeckt, die Sie bereits abgeschlossen haben, wenn Sie eine Apple-Client-App für FCM eingerichtet haben.
Fügen Sie Firebase zu Ihrem Apple-Projekt hinzu
In diesem Abschnitt werden Aufgaben behandelt, die Sie möglicherweise erledigt haben, wenn Sie bereits andere Firebase-Funktionen für Ihre App aktiviert haben. Speziell für FCM müssen Sie Ihren APNs-Authentifizierungsschlüssel hochladen und sich für Remote-Benachrichtigungen registrieren .
Voraussetzungen
Installieren Sie Folgendes:
- Xcode 14.1 oder höher
Stellen Sie sicher, dass Ihr Projekt diese Anforderungen erfüllt:
- Ihr Projekt muss auf diese Plattformversionen oder höher abzielen:
- iOS 11
- macOS 10.13
- tvOS 12
- watchOS 6
- Ihr Projekt muss auf diese Plattformversionen oder höher abzielen:
Richten Sie ein physisches Apple-Gerät zum Ausführen Ihrer App ein und führen Sie die folgenden Aufgaben aus:
- Besorgen Sie sich einen Apple-Push-Benachrichtigungs-Authentifizierungsschlüssel für Ihr Apple-Entwicklerkonto .
- Aktivieren Sie Push-Benachrichtigungen in XCode unter App > Capabilities .
Wenn Sie noch kein Xcode-Projekt haben und einfach nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstartbeispiele herunterladen.
Erstellen Sie ein Firebase-Projekt
Bevor Sie Firebase zu Ihrer Apple-App hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrer App herzustellen. Besuchen Sie „Firebase-Projekte verstehen“ , um mehr über Firebase-Projekte zu erfahren.
Registrieren Sie Ihre App bei Firebase
Um Firebase in Ihrer Apple-App verwenden zu können, müssen Sie Ihre App bei Ihrem Firebase-Projekt registrieren. Das Registrieren Ihrer App wird oft als „Hinzufügen“ Ihrer App zu Ihrem Projekt bezeichnet.
Gehen Sie zur Firebase-Konsole .
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 anzuzeigen.
Geben Sie die Bundle-ID Ihrer App in das Feld „Bundle-ID“ ein.
Eine Bundle-ID identifiziert eine Anwendung im Apple-Ökosystem eindeutig.
Finden Sie Ihre Bundle-ID: Öffnen Sie Ihr Projekt in Xcode, wählen Sie die App der obersten Ebene im Projektnavigator aus und wählen Sie dann die Registerkarte „Allgemein“ aus.
Der Wert des Felds Bundle Identifier ist die Bundle-ID (z. B.
com.yourcompany.yourproject
).Beachten Sie, dass beim Bundle-ID-Wert die Groß-/Kleinschreibung beachtet wird und er für diese Firebase-App nicht geändert werden kann, nachdem sie bei Ihrem Firebase-Projekt registriert wurde.
(Optional) Geben Sie weitere App-Informationen ein: App-Spitzname und App Store-ID .
App-Spitzname : Eine interne, praktische Kennung, die nur für Sie in der Firebase-Konsole sichtbar ist
App Store-ID : Wird von Firebase Dynamic Links verwendet, um Benutzer auf Ihre App Store-Seite weiterzuleiten , und von Google Analytics, um Conversion-Ereignisse in Google Ads zu importieren . Wenn Ihre App noch keine App Store-ID hat, können Sie die ID später in Ihren Projekteinstellungen hinzufügen.
Klicken Sie auf App registrieren .
Fügen Sie eine Firebase-Konfigurationsdatei hinzu
Klicken Sie auf „GoogleService-Info.plist herunterladen“ , um Ihre Konfigurationsdatei für die Firebase-Apple-Plattformen (
GoogleService-Info.plist
) zu erhalten.Die Firebase-Konfigurationsdatei enthält eindeutige, aber nicht geheime Kennungen für Ihr Projekt. Weitere Informationen zu dieser Konfigurationsdatei finden Sie unter „Grundlegendes zu Firebase-Projekten“ .
Sie können Ihre Firebase-Konfigurationsdatei jederzeit erneut herunterladen.
Stellen Sie sicher, dass an den Namen der Konfigurationsdatei keine zusätzlichen Zeichen wie
(2)
angehängt werden.
Verschieben Sie Ihre Konfigurationsdatei in das Stammverzeichnis Ihres Xcode-Projekts. Wenn Sie dazu aufgefordert werden, wählen Sie aus, ob die Konfigurationsdatei allen Zielen hinzugefügt werden soll.
Wenn Ihr Projekt mehrere Bundle-IDs enthält, müssen Sie jede Bundle-ID einer registrierten App in der Firebase-Konsole zuordnen, damit jede App über eine eigene GoogleService-Info.plist
Datei verfügen kann.
Fügen Sie Ihrer App Firebase-SDKs hinzu
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
- Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Firebase Cloud Messaging-Bibliothek.
- Fügen Sie das Flag
-ObjC
zum Abschnitt „Andere Linker-Flags“ der Build-Einstellungen Ihres Ziels hinzu. - Für ein optimales Erlebnis mit Firebase Cloud Messaging empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und das Firebase SDK für Google Analytics zu Ihrer App hinzuzufügen. Sie können entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung auswählen.
- Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.
https://github.com/firebase/firebase-ios-sdk.git
Laden Sie Ihren APNs-Authentifizierungsschlüssel hoch
Laden Sie Ihren APNs-Authentifizierungsschlüssel auf Firebase hoch. Wenn Sie noch keinen APNs-Authentifizierungsschlüssel haben, erstellen Sie unbedingt einen 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.
Klicken Sie unter „APNs-Authentifizierungsschlüssel“ unter „iOS-App-Konfiguration“ auf die Schaltfläche „Hochladen“ .
Navigieren Sie zu dem Speicherort, an dem Sie Ihren Schlüssel gespeichert haben, wählen Sie ihn aus und klicken Sie auf Öffnen . Fügen Sie die Schlüssel-ID für den Schlüssel hinzu (verfügbar im Apple Developer Member Center ) und klicken Sie auf Hochladen .
Initialisieren Sie Firebase in Ihrer App
Sie müssen Ihrer Anwendung Firebase-Initialisierungscode hinzufügen. Importieren Sie das Firebase-Modul und konfigurieren Sie eine gemeinsame Instanz wie gezeigt:
- Importieren Sie das
FirebaseCore
Modul in IhrUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Schnell
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Ziel c
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie eine gemeinsam genutzte
FirebaseApp
Instanz in derapplication(_:didFinishLaunchingWithOptions:)
Methode Ihres App-Delegierten:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Schnell
// Use Firebase library to configure APIs FirebaseApp.configure()
Ziel c
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an IhreApp
Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Registrieren Sie sich für Fernbenachrichtigungen
Registrieren Sie Ihre App entweder beim Start oder an der gewünschten Stelle in Ihrem Anwendungsablauf für Remote-Benachrichtigungen. Rufen SieregisterForRemoteNotifications
wie gezeigt auf:Schnell
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Ziel c
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
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 im Notifications Composer eingeben müssen, um dieses Tutorial abzuschließen, achten Sie darauf, das Token zu kopieren oder nach dem Abrufen sicher aufzubewahren.
Standardmäßig generiert das FCM SDK beim App-Start ein Registrierungstoken für die Client-App-Instanz. Ähnlich wie das APNs-Gerätetoken ermöglicht Ihnen dieses Token, gezielte Benachrichtigungen an jede bestimmte Instanz Ihrer App zu senden.
Auf die gleiche Weise, wie Apple-Plattformen normalerweise beim App-Start ein APNs-Gerätetoken bereitstellen, stellt FCM ein Registrierungstoken über die Methode messaging:didReceiveRegistrationToken:
von FIRMessagingDelegate
bereit. Das FCM SDK ruft beim ersten App-Start und immer dann, wenn das Token aktualisiert oder ungültig gemacht wird, ein neues oder vorhandenes Token ab. In allen Fällen ruft das FCM SDK messaging:didReceiveRegistrationToken:
mit einem gültigen Token auf.
Der Registrierungstoken kann sich ändern, wenn:
- Die App wird auf einem neuen Gerät wiederhergestellt
- Der Benutzer deinstalliert/neuinstalliert die App
- Der Benutzer löscht App-Daten.
Legen Sie den Nachrichtendelegierten fest
Um Registrierungstoken zu erhalten, implementieren Sie das Messaging-Delegatprotokoll und legen Sie delegate
von FIRMessaging
fest, nachdem Sie [FIRApp configure]
aufgerufen haben. Wenn Ihr Anwendungsdelegat beispielsweise dem Messaging-Delegatprotokoll entspricht, können Sie den Delegaten für application:didFinishLaunchingWithOptions:
auf sich selbst festlegen.
Schnell
Messaging.messaging().delegate = self
Ziel c
[FIRMessaging messaging].delegate = self;
Abrufen des aktuellen Registrierungstokens
Registrierungstoken werden über die Methode messaging:didReceiveRegistrationToken:
übermittelt. Diese Methode wird im Allgemeinen einmal pro App-Start mit Registrierungstoken aufgerufen. Wenn diese Methode aufgerufen wird, ist dies der ideale Zeitpunkt für Folgendes:
- Wenn das Registrierungstoken neu ist, senden Sie es an Ihren Anwendungsserver.
- Abonnieren Sie das Registrierungstoken für Themen. Dies ist nur für neue Abonnements oder für Situationen erforderlich, in denen der Benutzer die App erneut installiert hat.
Sie können das Token direkt mit token(completion:) abrufen. Wenn der Tokenabruf in irgendeiner Weise fehlgeschlagen ist, wird ein Fehler ungleich Null ausgegeben.
Schnell
Messaging.messaging().token { token, error in if let error = error { print("Error fetching FCM registration token: \(error)") } else if let token = token { print("FCM registration token: \(token)") self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)" } }
Ziel c
[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) { if (error != nil) { NSLog(@"Error getting FCM registration token: %@", error); } else { NSLog(@"FCM registration token: %@", token); self.fcmRegTokenMessage.text = token; } }];
Mit dieser Methode können Sie jederzeit auf den Token zugreifen, anstatt ihn zu speichern.
Überwachen Sie die Tokenaktualisierung
Um bei jeder Aktualisierung des Tokens benachrichtigt zu werden, stellen Sie einen Delegaten bereit, der dem Messaging-Delegatenprotokoll entspricht. Das folgende Beispiel registriert den Delegaten und fügt die richtige Delegatenmethode hinzu:
Schnell
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 ) // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
Ziel c
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken { NSLog(@"FCM registration token: %@", fcmToken); // Notify about received token. NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"FCMToken" object:nil userInfo:dataDict]; // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
Alternativ können Sie auf eine NSNotification
mit dem Namen kFIRMessagingRegistrationTokenRefreshNotification
warten, anstatt eine Delegate-Methode bereitzustellen. Die Token-Eigenschaft hat immer den aktuellen Token-Wert.
Senden Sie eine Benachrichtigungsnachricht
Installieren Sie die App und führen Sie sie auf dem Zielgerät aus. Auf Apple-Geräten müssen Sie die Anfrage um Erlaubnis zum Empfang von Remote-Benachrichtigungen akzeptieren.
Stellen Sie sicher, dass die App auf dem Gerät im Hintergrund läuft.
Öffnen Sie in der Firebase-Konsole die Seite „Messaging“ .
Wenn dies Ihre erste Nachricht ist, wählen Sie Ihre erste Kampagne erstellen aus.
- Wählen Sie Firebase-Benachrichtigungsnachrichten und dann Erstellen aus.
Andernfalls wählen Sie auf der Registerkarte „Kampagnen“ die Option „Neue Kampagne“ und dann „Benachrichtigungen“ aus.
Geben Sie den Nachrichtentext ein. Alle anderen Felder sind optional.
Wählen Sie im rechten Bereich Testnachricht senden aus .
Geben Sie im Feld mit der Bezeichnung „FCM-Registrierungstoken hinzufügen“ das Registrierungstoken ein, das Sie in einem vorherigen Abschnitt dieses Handbuchs erhalten haben.
Wählen Sie Testen aus.
Nachdem Sie Test ausgewählt haben, sollte das Ziel-Clientgerät (mit der App im Hintergrund) die Benachrichtigung erhalten.
Einblicke in die Nachrichtenzustellung an Ihre App erhalten Sie im FCM-Berichts-Dashboard , das die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten sowie Daten zu „Impressionen“ (von Benutzern gesehene Benachrichtigungen) für Android-Apps aufzeichnet.
Nächste Schritte
Informationen darüber, wie Sie über Benachrichtigungsnachrichten hinausgehen und Ihrer App weitere, erweiterte Verhaltensweisen hinzufügen können, finden Sie unter: