Senden Sie eine Testnachricht an eine Apple-App im Hintergrund

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

  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-Spitzname 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 Ihre Konfigurationsdatei für die Firebase-Apple-Plattformen ( GoogleService-Info.plist ) zu erhalten.

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

  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 Platforms SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wählen Sie die Firebase Cloud Messaging-Bibliothek.
  5. Fügen Sie das Flag -ObjC zum Abschnitt „Andere Linker-Flags“ der Build-Einstellungen Ihres Ziels hinzu.
  6. 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.
  7. Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.

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 .

  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 unter „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 gemeinsame Instanz wie gezeigt:

  1. Importieren Sie das FirebaseCore Modul in Ihr UIApplicationDelegate 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;
    // ...
          
  2. Konfigurieren Sie eine gemeinsam genutzte FirebaseApp Instanz in der application(_: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];
  3. Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App 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 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 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

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

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

  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. Andernfalls wählen Sie 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 mit der Bezeichnung „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 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: