Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Wyślij wiadomość testową do aplikacji Apple działającej w tle

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Aby rozpocząć pracę z FCM, zbuduj najprostszy przypadek użycia: wysyłanie testowego powiadomienia z kompozytora powiadomień do urządzenia programistycznego, gdy aplikacja działa w tle na urządzeniu. Ta strona zawiera listę wszystkich kroków, aby to osiągnąć, od konfiguracji po weryfikację — może obejmować kroki, które już wykonałeś, jeśli masz skonfigurowaną aplikację kliencką Apple dla FCM.

Dodaj Firebase do swojego projektu Apple

W tej sekcji opisano zadania, które mogłeś wykonać, jeśli masz już włączone inne funkcje Firebase w swojej aplikacji. W przypadku FCM musisz przesłać klucz uwierzytelniania APNs i zarejestrować się, aby otrzymywać powiadomienia zdalne .

Warunki wstępne

  • Zainstaluj następujące elementy:

    • Xcode 13.3.1 lub nowszy
  • Upewnij się, że Twój projekt spełnia te wymagania:

    • Twój projekt musi być kierowany na te wersje platformy lub nowsze:
      • iOS 10
      • macOS 10.12
      • telewizor z systemem operacyjnym 12
      • zegarekOS 6
  • Skonfiguruj fizyczne urządzenie Apple do uruchamiania aplikacji i wykonaj następujące zadania:

    • Uzyskaj klucz uwierzytelniania Apple Push Notification dla swojego konta Apple Developer .
    • Włącz powiadomienia wypychane w XCode w obszarze App > Capabilities .

Jeśli nie masz jeszcze projektu Xcode i chcesz tylko wypróbować produkt Firebase, możesz pobrać jeden z naszych przykładów szybkiego startu .

Utwórz projekt Firebase

Zanim dodasz Firebase do swojej aplikacji Apple, musisz utworzyć projekt Firebase, aby połączyć się z Twoją aplikacją. Odwiedź Zrozumienie projektów Firebase , aby dowiedzieć się więcej o projektach Firebase.

Zarejestruj swoją aplikację w Firebase

Aby używać Firebase w swojej aplikacji Apple, musisz zarejestrować swoją aplikację w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.

  1. Przejdź do konsoli Firebase .

  2. Na środku strony przeglądu projektu kliknij ikonę iOS+ , aby uruchomić proces konfiguracji.

    Jeśli dodałeś już aplikację do projektu Firebase, kliknij Dodaj aplikację , aby wyświetlić opcje platformy.

  3. Wpisz identyfikator pakietu swojej aplikacji w polu identyfikatora pakietu .

  4. (Opcjonalnie) Wpisz inne informacje o aplikacji: pseudonim aplikacji i identyfikator App Store .

  5. Kliknij Zarejestruj aplikację .

Dodaj plik konfiguracyjny Firebase

  1. Kliknij Pobierz GoogleService-Info.plist , aby uzyskać plik konfiguracyjny platform Apple Firebase ( GoogleService-Info.plist ).

  2. Przenieś plik konfiguracyjny do katalogu głównego projektu Xcode. Jeśli pojawi się monit, wybierz, aby dodać plik konfiguracyjny do wszystkich celów.

Jeśli masz w projekcie wiele identyfikatorów pakietów, musisz powiązać każdy identyfikator pakietu z zarejestrowaną aplikacją w konsoli Firebase, aby każda aplikacja mogła mieć własny plik GoogleService-Info.plist .

Dodaj pakiety SDK Firebase do swojej aplikacji

Użyj Menedżera pakietów Swift, aby zainstalować i zarządzać zależnościami Firebase.

  1. W Xcode przy otwartym projekcie aplikacji przejdź do pliku > Dodaj pakiety .
  2. Po wyświetleniu monitu dodaj repozytorium SDK platformy Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wybierz bibliotekę Firebase Cloud Messaging.
  5. Aby zapewnić optymalne działanie Firebase Cloud Messaging, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie pakietu SDK Firebase dla Google Analytics do swojej aplikacji. Możesz wybrać bibliotekę bez zbierania IDFA lub z kolekcją IDFA.
  6. Po zakończeniu Xcode automatycznie rozpocznie rozwiązywanie i pobieranie zależności w tle.

Prześlij swój klucz uwierzytelniający APNs

Prześlij swój klucz uwierzytelniania APNs do Firebase. Jeśli nie masz jeszcze klucza uwierzytelniania APNs, utwórz go w Apple Developer Member Center .

  1. Wewnątrz projektu w konsoli Firebase wybierz ikonę koła zębatego, wybierz Ustawienia projektu , a następnie wybierz kartę Wiadomości w chmurze .

  2. W kluczu uwierzytelniania APNs w sekcji Konfiguracja aplikacji na iOS kliknij przycisk Prześlij .

  3. Przejdź do lokalizacji, w której zapisano klucz, wybierz go i kliknij Otwórz . Dodaj identyfikator klucza (dostępny w Apple Developer Member Center ) i kliknij Prześlij .

Zainicjuj Firebase w swojej aplikacji

Musisz dodać kod inicjujący Firebase do swojej aplikacji. Zaimportuj moduł Firebase i skonfiguruj udostępnioną instancję, jak pokazano:

  1. Zaimportuj moduł FirebaseCore do swojego UIApplicationDelegate , a także wszelkie inne moduły Firebase używane przez delegata aplikacji. Na przykład, aby użyć Cloud Firestore i uwierzytelniania:

    Szybki

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cel C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Skonfiguruj współużytkowane wystąpienie FirebaseApp w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    Szybki

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

    Cel C

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

Zarejestruj się, aby otrzymywać powiadomienia zdalne

Podczas uruchamiania lub w żądanym punkcie przepływu aplikacji zarejestruj aplikację, aby otrzymywać powiadomienia zdalne. registerForRemoteNotifications połączeń dla zdalnych powiadomień, jak pokazano:

Szybki

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

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

Uzyskaj dostęp do tokena rejestracji

Aby wysłać wiadomość na określone urządzenie, musisz znać token rejestracji tego urządzenia. Ponieważ w celu ukończenia tego samouczka konieczne będzie wprowadzenie tokenu w polu kreatora powiadomień , należy skopiować token lub bezpiecznie go przechowywać po jego pobraniu.

Domyślnie zestaw FCM SDK generuje token rejestracji dla wystąpienia aplikacji klienckiej podczas uruchamiania aplikacji. Podobnie jak token urządzenia APNs, token ten umożliwia wysyłanie ukierunkowanych powiadomień do dowolnego wystąpienia Twojej aplikacji.

W ten sam sposób, w jaki platformy Apple zazwyczaj dostarczają token urządzenia APNs podczas uruchamiania aplikacji, FCM udostępnia token rejestracji za pośrednictwem FIRMessagingDelegate ' messaging:didReceiveRegistrationToken: . FCM SDK pobiera nowy lub istniejący token podczas początkowego uruchamiania aplikacji oraz za każdym razem, gdy token jest aktualizowany lub unieważniany. We wszystkich przypadkach FCM SDK wywołuje messaging:didReceiveRegistrationToken: z prawidłowym tokenem.

Token rejestracyjny może ulec zmianie, gdy:

  • Aplikacja zostanie przywrócona na nowym urządzeniu
  • Użytkownik odinstalowuje/ponownie instaluje aplikację
  • Użytkownik usuwa dane aplikacji.

Ustaw delegata wiadomości

Aby otrzymać tokeny rejestracji, zaimplementuj protokół delegata przesyłania komunikatów i ustaw właściwość delegate FIRMessaging po wywołaniu [FIRApp configure] . Na przykład, jeśli delegat aplikacji jest zgodny z protokołem delegata przesyłania komunikatów, można ustawić delegata na application:didFinishLaunchingWithOptions: do siebie.

Szybki

Messaging.messaging().delegate = self

Cel C

[FIRMessaging messaging].delegate = self;

Pobieranie aktualnego tokena rejestracji

Tokeny rejestracji są dostarczane za messaging:didReceiveRegistrationToken: . Ta metoda jest wywoływana zazwyczaj raz na aplikację, aby rozpocząć od tokenu rejestracji. Kiedy ta metoda jest wywoływana, jest to idealny moment, aby:

  • Jeśli token rejestracji jest nowy, wyślij go na serwer aplikacji.
  • Zasubskrybuj token rejestracji do tematów. Jest to wymagane tylko w przypadku nowych subskrypcji lub sytuacji, w których użytkownik ponownie zainstalował aplikację.

Możesz pobrać token bezpośrednio za pomocą token(completion:) . Jeśli pobieranie tokenu w jakikolwiek sposób nie powiodło się, występuje błąd inny niż null.

Szybki

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

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

Możesz użyć tej metody w dowolnym momencie, aby uzyskać dostęp do tokena zamiast go przechowywać.

Monitoruj odświeżanie tokena

Aby otrzymywać powiadomienia za każdym razem, gdy token jest aktualizowany, podaj delegata zgodnego z protokołem delegata obsługi komunikatów. Poniższy przykład rejestruje delegata i dodaje odpowiednią metodę delegata:

Szybki

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

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

Alternatywnie można nasłuchiwać NSNotification o nazwie kFIRMessagingRegistrationTokenRefreshNotification , zamiast podawać metodę delegata. Właściwość token zawsze ma aktualną wartość tokena.

Wyślij wiadomość z powiadomieniem

  1. Zainstaluj i uruchom aplikację na urządzeniu docelowym. Musisz zaakceptować prośbę o pozwolenie na otrzymywanie powiadomień zdalnych.

  2. Upewnij się, że aplikacja działa w tle na urządzeniu.

  3. Otwórz edytor powiadomień i wybierz Nowe powiadomienie .

  4. Wpisz tekst wiadomości.

  5. Wybierz Wyślij wiadomość testową .

  6. W polu oznaczonym Dodaj token rejestracji FCM wprowadź token rejestracji uzyskany w poprzedniej części tego przewodnika.

  7. Kliknij Test

Po kliknięciu Test , docelowe urządzenie klienckie (z aplikacją w tle) powinno otrzymać powiadomienie w centrum powiadomień .

Aby uzyskać wgląd w dostarczanie wiadomości do Twojej aplikacji, zapoznaj się z panelem raportowania FCM , który rejestruje liczbę wiadomości wysłanych i otwartych na urządzeniach Apple i Android wraz z danymi dotyczącymi „wyświetleń” (powiadomień widzianych przez użytkowników) w przypadku aplikacji na Androida.

Następne kroki

Aby wyjść poza powiadomienia i dodać inne, bardziej zaawansowane zachowanie do swojej aplikacji, zobacz: