Firebase is back at Google I/O on May 10! Register now

Senden Sie eine Testnachricht an eine Apple-App im Hintergrund

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Um mit FCM zu beginnen, erstellen Sie den einfachsten Anwendungsfall: Senden einer Testbenachrichtigungsnachricht vom Benachrichtigungs-Composer an ein Entwicklungsgerät, wenn sich die App auf dem Gerät im Hintergrund befindet. Diese Seite listet alle Schritte auf, um dies zu erreichen, von der Einrichtung bis zur Überprüfung – sie kann Schritte abdecken, die Sie bereits ausgeführt haben, wenn Sie eine Apple-Client-App für FCM eingerichtet haben.

Fügen Sie Ihrem Apple-Projekt Firebase hinzu

Dieser Abschnitt behandelt Aufgaben, die Sie möglicherweise abgeschlossen 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

  • Folgendes installieren:

    • Xcode 13.3.1 oder höher
  • Stellen Sie sicher, dass Ihr Projekt diese Anforderungen erfüllt:

    • Ihr Projekt muss auf diese Plattformversionen oder höher ausgerichtet sein:
      • iOS 11
      • macOS 10.13
      • tvOS 12
      • watchOS 6
  • Richten Sie ein physisches Apple-Gerät ein, um Ihre App auszuführen, und führen Sie diese Aufgaben aus:

    • Fordern Sie einen Authentifizierungsschlüssel für Apple-Push-Benachrichtigungen für Ihr Apple-Entwicklerkonto an.
    • Aktivieren Sie Push-Benachrichtigungen in XCode unter App > Capabilities .

Wenn Sie noch kein Xcode-Projekt haben und nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstart-Beispiele 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 zu verwenden, 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.

  1. Gehen Sie zur Firebase-Konsole .

  2. 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.

  3. Geben Sie die Bundle-ID Ihrer App in das Feld „Bundle-ID“ ein.

  4. (Optional) Geben Sie weitere App-Informationen ein: App-Nickname und App Store-ID .

  5. Klicken Sie auf App registrieren .

Fügen Sie eine Firebase-Konfigurationsdatei hinzu

  1. Klicken Sie auf GoogleService-Info.plist herunterladen, um die Konfigurationsdatei für Ihre Firebase-Apple-Plattformen ( GoogleService-Info.plist ) abzurufen.

  2. 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 Paket-IDs haben, müssen Sie jede Paket-ID mit einer registrierten App in der Firebase-Konsole verknüpfen, damit jede App ihre eigene GoogleService-Info.plist Datei haben kann.

Fügen Sie Ihrer App Firebase-SDKs hinzu

Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple-Plattform-SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wählen Sie die Firebase Cloud Messaging-Bibliothek aus.
  5. Für ein optimales Erlebnis mit Firebase Cloud Messaging empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und Ihrer App das Firebase SDK für Google Analytics hinzuzufügen. Sie können entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung auswählen.
  6. Wenn Sie fertig sind, beginnt Xcode automatisch mit dem Auflösen und Herunterladen Ihrer Abhängigkeiten im Hintergrund.

Laden Sie Ihren APNs-Authentifizierungsschlüssel hoch

Laden Sie Ihren APNs-Authentifizierungsschlüssel in Firebase hoch. Wenn Sie noch keinen APNs-Authentifizierungsschlüssel haben, stellen Sie sicher, dass Sie einen im Apple Developer Member Center erstellen.

  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. Klicken Sie im APNs-Authentifizierungsschlüssel unter iOS-App-Konfiguration auf die Schaltfläche Hochladen .

  3. 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 freigegebene Instanz wie gezeigt:

  1. Importieren Sie das FirebaseCore Modul in Ihr UIApplicationDelegate sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. So verwenden Sie beispielsweise Cloud Firestore und Authentifizierung:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Schnell

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Ziel c

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurieren Sie eine freigegebene FirebaseApp Instanz in der Methode application(_:didFinishLaunchingWithOptions:) Ihres App-Delegaten:

    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];
  3. Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App Struktur anfügen. Sie müssen auch das Swizzling von App-Delegaten 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 Remote-Benachrichtigungen

Registrieren Sie Ihre App entweder beim Start oder an der gewünschten Stelle in Ihrem Anwendungsablauf für Remotebenachrichtigungen. Rufen Sie registerForRemoteNotifications 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 Benachrichtigungs-Composer eingeben müssen, um dieses Tutorial abzuschließen, stellen Sie sicher, dass Sie das Token kopieren oder sicher speichern, nachdem Sie es abgerufen haben.

Standardmäßig generiert das FCM SDK beim App-Start ein Registrierungstoken für die Client-App-Instanz. Ähnlich wie beim APNs-Gerätetoken können Sie mit diesem Token gezielte Benachrichtigungen an eine bestimmte Instanz Ihrer App 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: FIRMessagingDelegate bereit. Das FCM SDK ruft ein neues oder vorhandenes Token während des ersten App-Starts und immer dann ab, wenn das Token aktualisiert oder ungültig gemacht wird. In allen Fällen ruft das FCM-SDK messaging:didReceiveRegistrationToken: mit einem gültigen Token auf.

Das Registrierungstoken kann sich ändern, wenn:

  • Die App wird auf einem neuen Gerät wiederhergestellt
  • Der Benutzer deinstalliert/installiert die App neu
  • Der Benutzer löscht App-Daten.

Legen Sie den Messaging-Delegaten fest

Um Registrierungstoken zu erhalten, implementieren Sie das Messaging-Delegat-Protokoll und legen Sie delegate Eigenschaft von FIRMessaging fest, nachdem Sie [FIRApp configure] aufgerufen haben. Wenn Ihr Anwendungsdelegat beispielsweise dem Messaging-Delegatenprotokoll 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: geliefert. Diese Methode wird in der Regel 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 neu installiert hat.

Sie können das Token direkt mit token(completion:) abrufen. Ein Nicht-Null-Fehler wird bereitgestellt, wenn der Token-Abruf in irgendeiner Weise fehlgeschlagen ist.

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;
  }
}];

Sie können diese Methode jederzeit verwenden, um auf das Token zuzugreifen, anstatt es zu speichern.

Überwachen Sie die Token-Aktualisierung

Um bei jeder Aktualisierung des Tokens benachrichtigt zu werden, geben Sie einen Delegaten an, der dem Messaging-Delegatenprotokoll entspricht. Das folgende Beispiel registriert den Delegaten und fügt die richtige Delegatmethode 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 Delegatmethode bereitzustellen. Die Tokeneigenschaft hat immer den aktuellen Tokenwert.

Senden Sie eine Benachrichtigungsnachricht

  1. Installieren Sie die App auf dem Zielgerät und führen Sie sie aus. Auf Apple-Geräten müssen Sie die Anfrage zum Erhalt von Remote-Benachrichtigungen akzeptieren.

  2. Stellen Sie sicher, dass sich die App auf dem Gerät im Hintergrund befindet.

  3. Öffnen Sie in der Firebase-Konsole die Seite „Messaging“ .

  4. Wenn dies Ihre erste Nachricht ist, wählen Sie Ihre erste Kampagne erstellen aus.

    1. Wählen Sie Firebase-Benachrichtigungsnachrichten und dann Erstellen aus.
  5. Wählen Sie andernfalls auf der Registerkarte Kampagnen die Option Neue Kampagne und dann Benachrichtigungen aus.

  6. Geben Sie den Nachrichtentext ein. Alle anderen Felder sind optional.

  7. Wählen Sie im rechten Bereich Testnachricht senden aus .

  8. Geben Sie im Feld FCM-Registrierungstoken hinzufügen das Registrierungstoken ein, das Sie in einem vorherigen Abschnitt dieses Handbuchs erhalten haben.

  9. Wählen Sie Testen aus.

Nachdem Sie Test ausgewählt haben, sollte das Zielclientgerät (mit der App im Hintergrund) die Benachrichtigung erhalten.

Einen Einblick in die Nachrichtenübermittlung an Ihre App erhalten Sie im FCM-Berichts-Dashboard , das die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten aufzeichnet, zusammen mit Daten für „Impressionen“ (von Benutzern gesehene Benachrichtigungen) für Android-Apps.

Nächste Schritte

Um über Benachrichtigungsmeldungen hinauszugehen und Ihrer App andere, fortgeschrittenere Verhaltensweisen hinzuzufügen, siehe:

,

Um mit FCM zu beginnen, erstellen Sie den einfachsten Anwendungsfall: Senden einer Testbenachrichtigungsnachricht vom Benachrichtigungs-Composer an ein Entwicklungsgerät, wenn sich die App auf dem Gerät im Hintergrund befindet. Diese Seite listet alle Schritte auf, um dies zu erreichen, von der Einrichtung bis zur Überprüfung – sie kann Schritte abdecken, die Sie bereits ausgeführt haben, wenn Sie eine Apple-Client-App für FCM eingerichtet haben.

Fügen Sie Ihrem Apple-Projekt Firebase hinzu

Dieser Abschnitt behandelt Aufgaben, die Sie möglicherweise abgeschlossen 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

  • Folgendes installieren:

    • Xcode 13.3.1 oder höher
  • Stellen Sie sicher, dass Ihr Projekt diese Anforderungen erfüllt:

    • Ihr Projekt muss auf diese Plattformversionen oder höher ausgerichtet sein:
      • iOS 11
      • macOS 10.13
      • tvOS 12
      • watchOS 6
  • Richten Sie ein physisches Apple-Gerät ein, um Ihre App auszuführen, und führen Sie diese Aufgaben aus:

    • Fordern Sie einen Authentifizierungsschlüssel für Apple-Push-Benachrichtigungen für Ihr Apple-Entwicklerkonto an.
    • Aktivieren Sie Push-Benachrichtigungen in XCode unter App > Capabilities .

Wenn Sie noch kein Xcode-Projekt haben und nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstart-Beispiele 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 zu verwenden, 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.

  1. Gehen Sie zur Firebase-Konsole .

  2. 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.

  3. Geben Sie die Bundle-ID Ihrer App in das Feld „Bundle-ID“ ein.

  4. (Optional) Geben Sie weitere App-Informationen ein: App-Nickname und App Store-ID .

  5. Klicken Sie auf App registrieren .

Fügen Sie eine Firebase-Konfigurationsdatei hinzu

  1. Klicken Sie auf GoogleService-Info.plist herunterladen, um die Konfigurationsdatei für Ihre Firebase-Apple-Plattformen ( GoogleService-Info.plist ) abzurufen.

  2. 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 Paket-IDs haben, müssen Sie jede Paket-ID mit einer registrierten App in der Firebase-Konsole verknüpfen, damit jede App ihre eigene GoogleService-Info.plist Datei haben kann.

Fügen Sie Ihrer App Firebase-SDKs hinzu

Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple-Plattform-SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wählen Sie die Firebase Cloud Messaging-Bibliothek aus.
  5. Für ein optimales Erlebnis mit Firebase Cloud Messaging empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und Ihrer App das Firebase SDK für Google Analytics hinzuzufügen. Sie können entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung auswählen.
  6. Wenn Sie fertig sind, beginnt Xcode automatisch mit dem Auflösen und Herunterladen Ihrer Abhängigkeiten im Hintergrund.

Laden Sie Ihren APNs-Authentifizierungsschlüssel hoch

Laden Sie Ihren APNs-Authentifizierungsschlüssel in Firebase hoch. Wenn Sie noch keinen APNs-Authentifizierungsschlüssel haben, stellen Sie sicher, dass Sie einen im Apple Developer Member Center erstellen.

  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. Klicken Sie im APNs-Authentifizierungsschlüssel unter iOS-App-Konfiguration auf die Schaltfläche Hochladen .

  3. 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 freigegebene Instanz wie gezeigt:

  1. Importieren Sie das FirebaseCore Modul in Ihr UIApplicationDelegate sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. So verwenden Sie beispielsweise Cloud Firestore und Authentifizierung:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Schnell

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Ziel c

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurieren Sie eine freigegebene FirebaseApp Instanz in der Methode application(_:didFinishLaunchingWithOptions:) Ihres App-Delegaten:

    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];
  3. Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App Struktur anfügen. Sie müssen auch das Swizzling von App-Delegaten 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 Remote-Benachrichtigungen

Registrieren Sie Ihre App entweder beim Start oder an der gewünschten Stelle in Ihrem Anwendungsablauf für Remotebenachrichtigungen. Rufen Sie registerForRemoteNotifications 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 Benachrichtigungs-Composer eingeben müssen, um dieses Tutorial abzuschließen, stellen Sie sicher, dass Sie das Token kopieren oder sicher speichern, nachdem Sie es abgerufen haben.

Standardmäßig generiert das FCM SDK beim App-Start ein Registrierungstoken für die Client-App-Instanz. Ähnlich wie beim APNs-Gerätetoken können Sie mit diesem Token gezielte Benachrichtigungen an eine bestimmte Instanz Ihrer App 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: FIRMessagingDelegate bereit. Das FCM SDK ruft ein neues oder vorhandenes Token während des ersten App-Starts und immer dann ab, wenn das Token aktualisiert oder ungültig gemacht wird. In allen Fällen ruft das FCM-SDK messaging:didReceiveRegistrationToken: mit einem gültigen Token auf.

Das Registrierungstoken kann sich ändern, wenn:

  • Die App wird auf einem neuen Gerät wiederhergestellt
  • Der Benutzer deinstalliert/installiert die App neu
  • Der Benutzer löscht App-Daten.

Legen Sie den Messaging-Delegaten fest

Um Registrierungstoken zu erhalten, implementieren Sie das Messaging-Delegat-Protokoll und legen Sie delegate Eigenschaft von FIRMessaging fest, nachdem Sie [FIRApp configure] aufgerufen haben. Wenn Ihr Anwendungsdelegat beispielsweise dem Messaging-Delegatenprotokoll 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: geliefert. Diese Methode wird in der Regel 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 neu installiert hat.

Sie können das Token direkt mit token(completion:) abrufen. Ein Nicht-Null-Fehler wird bereitgestellt, wenn der Token-Abruf in irgendeiner Weise fehlgeschlagen ist.

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;
  }
}];

Sie können diese Methode jederzeit verwenden, um auf das Token zuzugreifen, anstatt es zu speichern.

Überwachen Sie die Token-Aktualisierung

Um bei jeder Aktualisierung des Tokens benachrichtigt zu werden, geben Sie einen Delegaten an, der dem Messaging-Delegatenprotokoll entspricht. Das folgende Beispiel registriert den Delegaten und fügt die richtige Delegatmethode 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 Delegatmethode bereitzustellen. Die Tokeneigenschaft hat immer den aktuellen Tokenwert.

Senden Sie eine Benachrichtigungsnachricht

  1. Installieren Sie die App auf dem Zielgerät und führen Sie sie aus. Auf Apple-Geräten müssen Sie die Anfrage zum Erhalt von Remote-Benachrichtigungen akzeptieren.

  2. Stellen Sie sicher, dass sich die App auf dem Gerät im Hintergrund befindet.

  3. Öffnen Sie in der Firebase-Konsole die Seite „Messaging“ .

  4. Wenn dies Ihre erste Nachricht ist, wählen Sie Ihre erste Kampagne erstellen aus.

    1. Wählen Sie Firebase-Benachrichtigungsnachrichten und dann Erstellen aus.
  5. Wählen Sie andernfalls auf der Registerkarte Kampagnen die Option Neue Kampagne und dann Benachrichtigungen aus.

  6. Geben Sie den Nachrichtentext ein. Alle anderen Felder sind optional.

  7. Wählen Sie im rechten Bereich Testnachricht senden aus .

  8. Geben Sie im Feld FCM-Registrierungstoken hinzufügen das Registrierungstoken ein, das Sie in einem vorherigen Abschnitt dieses Handbuchs erhalten haben.

  9. Wählen Sie Testen aus.

Nachdem Sie Test ausgewählt haben, sollte das Zielclientgerät (mit der App im Hintergrund) die Benachrichtigung erhalten.

Einen Einblick in die Nachrichtenübermittlung an Ihre App erhalten Sie im FCM-Berichts-Dashboard , das die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten aufzeichnet, zusammen mit Daten für „Impressionen“ (von Benutzern gesehene Benachrichtigungen) für Android-Apps.

Nächste Schritte

Um über Benachrichtigungsmeldungen hinauszugehen und Ihrer App andere, fortgeschrittenere Verhaltensweisen hinzuzufügen, siehe: