Testnachricht an eine Apple-App im Hintergrund senden

Um mit FCM zu beginnen, erstellen Sie den einfachsten Anwendungsfall: Senden Sie eine Testbenachrichtigung vom Benachrichtigungs-Composer an ein Entwicklungsgerät, während die App auf dem Gerät im Hintergrund ausgeführt wird. Auf dieser Seite sind alle Schritte von der Einrichtung bis zur Bestätigung aufgeführt. Möglicherweise werden auch Schritte beschrieben, die Sie bereits ausgeführt haben, wenn Sie eine Apple-Client-App für FCM eingerichtet haben.

Firebase zu Ihrem Apple-Projekt hinzufügen

In diesem Abschnitt werden Aufgaben beschrieben, die Sie möglicherweise bereits ausgeführt haben, wenn Sie bereits andere Firebase-Funktionen für Ihre App aktiviert haben. Für FCM müssen Sie Ihren APNs-Authentifizierungsschlüssel hochladen und sich für Remote-Benachrichtigungen registrieren.

Vorbereitung

  • Installieren Sie Folgendes:

    • Xcode 15.2 oder höher
  • Ihr Projekt muss die folgenden Anforderungen erfüllen:

    • Ihr Projekt muss auf die folgenden oder höheren Plattformversionen ausgerichtet sein:
      • iOS 13
      • macOS 10.15
      • tvOS 13
      • watchOS 7
  • Richten Sie ein physisches Apple-Gerät ein, um Ihre App auszuführen, und führen Sie die folgenden Aufgaben aus:

    • Holen Sie sich einen Apple Push Notification-Authentifizierungsschlüssel für Ihr Apple-Entwicklerkonto.
    • Aktivieren Sie Push-Benachrichtigungen in XCode unter App > Funktionen.

Wenn Sie noch kein Xcode-Projekt haben und nur ein Firebase-Produkt ausprobieren möchten, können Sie eines unserer Schnellstartbeispiele herunterladen.

Firebase-Projekt erstellen

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. Weitere Informationen zu Firebase-Projekten finden Sie unter Firebase-Projekte.

App bei Firebase registrieren

Wenn Sie Firebase in Ihrer Apple-App verwenden möchten, müssen Sie Ihre App in Ihrem Firebase-Projekt registrieren. Die Registrierung Ihrer App wird oft als „Hinzufügen“ der App zu Ihrem Projekt bezeichnet.

  1. Rufen Sie die Firebase Console auf.

  2. Klicken Sie in der Mitte der Projektübersicht auf das Symbol iOS+, 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.

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

  4. Optional: Geben Sie weitere App-Informationen ein: App-Alias und App Store-ID.

  5. Klicken Sie auf App registrieren.

Firebase-Konfigurationsdatei hinzufügen

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

  2. Verschieben Sie die Konfigurationsdatei in das Stammverzeichnis Ihres Xcode-Projekts. Wählen Sie bei Aufforderung aus, dass die Konfigurationsdatei allen Zielen hinzugefügt werden soll.

Wenn Sie mehrere Bundle-IDs in Ihrem Projekt haben, müssen Sie jede Bundle-ID mit einer registrierten App in der Firebase-Konsole verknüpfen, damit jede App eine eigene GoogleService-Info.plist-Datei haben kann.

Firebase SDKs zu Ihrer App hinzufügen

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

  1. Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Add Packages (Datei > Pakete hinzufügen).
  2. Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wählen Sie die Bibliothek Firebase Cloud Messaging aus.
  5. Fügen Sie das Flag -ObjC im Abschnitt Other Linker Flags (Weitere Verknüpfungsmerker) der Build-Einstellungen des Ziels hinzu.
  6. Für eine optimale Nutzung von 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 oder mit IDFA-Erfassung auswählen.
  7. Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

APNs-Authentifizierungsschlüssel hochladen

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

  1. Klicken Sie in der Firebase Console in Ihrem Projekt auf das Zahnradsymbol, dann auf Projekteinstellungen und dann auf den Tab Cloud Messaging.

  2. Klicken Sie unter APNs-Authentifizierungsschlüssel im Abschnitt Konfiguration der iOS-App auf die Schaltfläche Hochladen.

  3. Rufen Sie den Speicherort auf, an dem Sie den 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.

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 wie hier gezeigt:

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

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

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

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegierten erstellen und über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an das App-Objekt anhängen. Außerdem müssen Sie das App-Delegate-Swizzling deaktivieren. Weitere Informationen finden Sie in der SwiftUI-Anleitung.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

Für Remote-Benachrichtigungen registrieren

Registrieren Sie Ihre App entweder beim Start oder an der gewünschten Stelle im Ablauf Ihrer Anwendung für Remote-Benachrichtigungen. Rufen Sie registerForRemoteNotifications wie gezeigt auf:

Swift


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

Objective-C


[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

Auf das Registrierungstoken zugreifen

Wenn Sie eine Nachricht an ein bestimmtes Gerät senden möchten, benötigen Sie das Registrierungstoken dieses Geräts. Da Sie das Token in ein Feld im Benachrichtigungs-Editor eingeben müssen, um diese Anleitung abzuschließen, sollten Sie es kopieren oder sicher speichern, nachdem Sie es abgerufen haben.

Standardmäßig generiert das FCM SDK beim Starten der App 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.

So wie Apple-Plattformen beim Starten der App in der Regel ein APNs-Gerätetoken senden, stellt FCM über die messaging:didReceiveRegistrationToken:-Methode von FIRMessagingDelegate ein Registrierungstoken bereit. Das FCM SDK ruft beim ersten Start der App und jedes Mal, wenn das Token aktualisiert oder ungültig wird, ein neues oder vorhandenes Token ab. In jedem Fall ruft das FCM SDK messaging:didReceiveRegistrationToken: mit einem gültigen Token auf.

Das Registrierungstoken kann sich in folgenden Fällen ändern:

  • Die App wird auf einem neuen Gerät wiederhergestellt
  • Der Nutzer deinstalliert die App und installiert sie dann wieder
  • Der Nutzer löscht die App-Daten.

Messaging-Delegierten festlegen

Wenn du Registrierungstokens erhalten möchtest, implementiere das Messaging-Delegierungsprotokoll und setze das delegate-Attribut von FIRMessaging nach dem Aufruf von [FIRApp configure]. Wenn Ihr Anwendungsdelegat beispielsweise dem Messaging-Delegatprotokoll entspricht, können Sie den Delegaten unter application:didFinishLaunchingWithOptions: auf sich selbst festlegen.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Aktuelles Registrierungstoken abrufen

Registrierungstokens werden über die Methode messaging:didReceiveRegistrationToken: gesendet. Diese Methode wird in der Regel einmal pro App-Start mit dem Registrierungstoken aufgerufen. Wenn diese Methode aufgerufen wird, ist es der ideale Zeitpunkt für Folgendes:

  • Wenn das Registrierungstoken neu ist, senden Sie es an Ihren Anwendungsserver.
  • Registrieren Sie das Registrierungstoken für Themen. Das ist nur für neue Abos oder für Situationen erforderlich, in denen der Nutzer die App neu installiert hat.

Sie können das Token direkt mit token(completion:) abrufen. Wenn der Abruf des Tokens fehlgeschlagen ist, wird ein Fehler zurückgegeben, der nicht null ist.

Swift

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)"
  }
}

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

Tokenaktualisierung überwachen

Wenn Sie benachrichtigt werden möchten, wenn das Token aktualisiert wird, geben Sie einen Bevollmächtigten an, der dem Messaging Delegate Protocol entspricht. Im folgenden Beispiel wird der Delegate registriert und die entsprechende Delegate-Methode hinzugefügt:

Swift

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

Objective-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 Delegating-Methode anzugeben. Die Token-Eigenschaft hat immer den aktuellen Tokenwert.

Benachrichtigungsnachricht senden

  1. Installieren und ausführen Sie die App auf dem Zielgerät. Auf Apple-Geräten müssen Sie die Berechtigungsanfrage für Remote-Benachrichtigungen akzeptieren.

  2. Die App muss auf dem Gerät im Hintergrund ausgeführt werden.

  3. Öffnen Sie in der Firebase Console die Seite Messaging.

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

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

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

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

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

  9. Wählen Sie Testen aus.

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

Informationen zur Zustellung von Nachrichten an Ihre App finden Sie im FCMBerichtsdashboard. Dort werden die Anzahl der auf Apple- und Android-Geräten gesendeten und geöffneten Nachrichten sowie Daten zu „Impressionen“ (von Nutzern gesehene Benachrichtigungen) für Android-Apps erfasst.

Nächste Schritte

Wenn Sie Ihrer App nicht nur Benachrichtigungen hinzufügen, sondern auch andere, erweiterte Funktionen, lesen Sie die folgenden Hilfeartikel: