Catch up on everthing we announced at this year's Firebase Summit. Learn more

Senden Sie eine Testnachricht an eine Apple-App im Hintergrund

Um mit FCM, baut aus dem einfachstenen Anwendungsfall: eine Testbenachrichtigung Nachricht von den Sende Benachrichtigungen Komponisten zu einer Entwicklungseinrichtung , wenn die App im Hintergrund auf dem Gerät ist. Auf dieser Seite sind alle Schritte , dies zu erreichen, von der Einrichtung zur Überprüfung - es kann Schritte decken Sie bereits , wenn Sie abgeschlossen haben , einen Apple - Client - Anwendung einrichten für FCM.

Firebase zu Ihrem Apple-Projekt hinzufügen

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 Ihre APNs Authentifizierungsschlüssel laden und registrieren Sie sich für Remote - Benachrichtigungen .

Voraussetzungen

  • Installieren Sie Folgendes:

    • Xcode 12.5 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 10
      • macOS 10.12
      • tvOS 12
      • watchOS 6
  • Stellen Sie ein physisches Apple - Gerät bis zu Ihrer Anwendung ausführen, und führen Sie die folgenden Aufgaben:

    • Erhalten Sie einen Apple Push Notification - Authentifizierungsschlüssel für Ihr Apple Developer Account .
    • Aktivieren Sie Push Notifications in XCode unter App> Capabilities.

Wenn Sie nicht bereits über ein Xcode - Projekt haben und wollen nur ein Produkt Firebase auszuprobieren, können Sie einen unserer Download quickstart Proben .

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 verstehen Firebase Projekte mehr über Projekte Firebase zu lernen.

Registrieren Sie Ihre App bei Firebase

Nachdem Sie ein Firebase-Projekt erstellt haben, können Sie ihm Ihre Apple-App hinzufügen.

Besuchen Sie verstehen Firebase Projekte für das Hinzufügen von Anwendungen zu einem Projekt Firebase mehr über Best Practices und Überlegungen zu lernen, auch , wie mehrere Build - Varianten zu behandeln.

  1. Gehen Sie auf die Firebase Konsole .

  2. Im Zentrum des Projekts Übersichtsseite klicken Sie auf das iOS + Symbol , um das Setup - Workflow zu starten.

    Wenn Sie bereits eine App zu Ihrem Firebase - Projekt hinzugefügt haben, klicken Sie App Fügen Sie die Plattform - Optionen anzuzeigen.

  3. Geben Sie Ihre App-Bundle - ID in dem Bündel - ID - Feld.

  4. (Optional) Geben Sie weitere Informationen zur App: App Spitznamen und App Store - ID.

  5. Klicken Sie auf Registrieren App.

Eine Firebase-Konfigurationsdatei hinzufügen

  1. Klicken Sie auf Download GoogleService-Info.plist auf Ihre Firebase Apple - Plattformen Konfigurationsdatei (erhalten GoogleService-Info.plist ).

  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 Sie mehr Bündel IDs in Ihrem Projekt haben, müssen Sie jedes Bündel ID mit einer registrierten Anwendung in der Konsole verbinden Firebase so dass jede App eine eigene haben kann GoogleService-Info.plist - Datei.

Firebase SDKs zu Ihrer App hinzufügen

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

  1. In Xcode, mit Ihrem App - Projekt zu öffnen, navigieren Sie zu Datei> Swift Packages> Paket hinzufügen Abhängigkeit.
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das SDK-Repository der Firebase Apple Platforms hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Wählen Sie die Firebase Cloud Messaging-Bibliothek aus.
  5. Für ein optimales Benutzererlebnis mit Firebase Cloud Messaging, empfehlen wir Google Analytics ermöglicht in Ihrem Firebase - Projekt und das Hinzufügen des Firebase SDK für Google Analytics in Ihrer App. Sie können entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung auswählen.
  6. Wenn Sie fertig sind, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

Laden Sie Ihren APNs-Authentifizierungsschlüssel hoch

Laden Sie Ihren APNs-Authentifizierungsschlüssel in Firebase hoch. Wenn Sie nicht bereits über einen APNs Authentifizierungsschlüssel haben, stellen Sie sicher , dass man in der erstellen Apple Developer Member Center .

  1. In Ihrem Projekt in der Firebase - Konsole, wählen Sie das Zahnradsymbol, Projekteinstellungen auswählen und anschließend die Cloud Messaging Registerkarte.

  2. In APNs Authentifizierungsschlüssel unter iOS - App - Konfiguration, klicken Sie auf die Schaltfläche Hochladen.

  3. Wechseln Sie zu dem Ort , an dem Sie Ihren Schlüssel gespeichert, wählen Sie aus und klicken Sie auf Öffnen. Fügen Sie den Schlüssel - ID für den Schlüssel (erhältlich im Apple Developer Member Center ) und klicken Sie auf Hochladen.

Firebase in Ihrer App initialisieren

Sie müssen Ihrer Anwendung den Firebase-Initialisierungscode hinzufügen. Importieren Sie das Firebase-Modul und konfigurieren Sie eine freigegebene Instanz wie gezeigt:

  1. Importieren Sie die Firebase Modul in Ihrem UIApplicationDelegate :

    Schnell

    import Firebase

    Ziel c

    @import Firebase;
  2. Konfigurieren ein FirebaseApp gemeinsame Instanz, in der Regel in Ihrem App - application:didFinishLaunchingWithOptions: Methode:

    Schnell

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

    Ziel c

    // Use Firebase library to configure APIs
    [FIRApp configure];

Für Fernbenachrichtigungen registrieren

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:

Schnell

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()

Ziel c

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[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 müssen Sie den Token in einem Feld in der Eingabe Benachrichtigungen Komponist dieses Tutorial abgeschlossen haben , stellen Sie sicher , dass das Token kopieren oder es sicher speichern , nachdem Sie es abrufen.

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 Art und Weise , dass Apple - Plattformen typischerweise eine APNs Gerät auf app Start Token liefern, bietet FCM eine Registrierungstoken über FIRMessagingDelegate ‚s messaging:didReceiveRegistrationToken: Methode. 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.

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.

Stellen Sie den Messaging-Delegierten ein

So empfängt Registrierung Token, implementieren , um das Messaging - Delegierten - Protokoll und setzt FIRMessaging ‚s delegate Eigenschaft nach dem Aufruf von [FIRApp configure] . Zum Beispiel, wenn Ihre Anwendung Delegierter auf dem Messaging - Delegat - Protokoll entspricht, können Sie die Delegierten am Set application:didFinishLaunchingWithOptions: auf sich.

Schnell

Messaging.messaging().delegate = self

Ziel c

[FIRMessaging messaging].delegate = self;

Abrufen des aktuellen Registrierungstokens

Registration Token werden über die Methode geliefert messaging:didReceiveRegistrationToken: . Diese Methode wird im Allgemeinen einmal pro App-Start mit Registrierungstoken aufgerufen. Wenn diese Methode aufgerufen wird, ist es der ideale Zeitpunkt, um:

  • 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 abrufen direkt mit Token (Abschluss :) . Ein Fehler ungleich null wird ausgegeben, wenn der Tokenabruf 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.

Token-Aktualisierung überwachen

Um benachrichtigt zu werden, wenn das Token aktualisiert wird, stellen Sie einen Delegaten bereit, der dem Messaging-Delegatenprotokoll entspricht. Im folgenden Beispiel wird der Delegat registriert und die richtige Delegatmethode hinzugefügt:

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 für einen hören NSNotification namens kFIRMessagingRegistrationTokenRefreshNotification anstatt eine Delegatmethode liefern. 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. Sie müssen die Anfrage zur Berechtigung zum Empfangen von Remotebenachrichtigungen akzeptieren.

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

  3. Öffnen Sie die Benachrichtigungen Komponist und wählen Sie Neue Mitteilung.

  4. Geben Sie den Nachrichtentext ein.

  5. Wählen Sie Senden Testnachricht.

  6. Im Feld mit der Bezeichnung eines FCM Registrierungstoken hinzufügen, geben Sie den Registrierungstoken Sie in einem früheren Abschnitt dieses Handbuchs erhalten.

  7. klicken Sie auf Test

Nachdem Sie auf Test sollte das gezielte Client - Gerät (mit der App im Hintergrund) die Benachrichtigung im Infozentrum erhalten.

Für einen Einblick in die Nachrichtenübermittlung zu Ihrer Anwendung finden Sie in der FCM - Reporting - Dashboard , das die Anzahl der gesendeten Nachrichten und geöffnet auf Apple und Android - Geräte, zusammen mit den Daten für „Eindrücke“ (Mitteilungen gesehen werden von den Benutzern) für Android - Anwendungen aufzeichnet.

Nächste Schritte

Wenn Sie über Benachrichtigungen hinausgehen und Ihrer App andere, erweiterte Verhaltensweisen hinzufügen möchten, lesen Sie: