Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

Aby rozpocząć korzystanie z FCM, opracuj najprostszy przypadek użycia: wysł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 niezbędnych do osiągnięcia tego celu, od konfiguracji po weryfikację — może obejmować czynności, które już wykonałeś, jeśli skonfigurowałeś aplikację kliencką Apple dla FCM.

Dodaj Firebase do swojego projektu Apple

W tej sekcji opisano zadania, które mogłeś wykonać, jeśli w swojej aplikacji masz już włączone inne funkcje Firebase. W szczególności w przypadku FCM musisz przesłać swój klucz uwierzytelniający APNs i zarejestrować się w celu otrzymywania zdalnych powiadomień .

Wymagania wstępne

  • Zainstaluj następujące elementy:

    • Xcode 14.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 11
      • macOS 10.13
      • tvOS 12
      • WatchOS 6
  • Skonfiguruj fizyczne urządzenie Apple do uruchamiania aplikacji i wykonaj następujące zadania:

    • Uzyskaj klucz Apple Push Notification Authentication Key dla swojego konta programisty Apple .
    • Włącz powiadomienia push w XCode w obszarze App > Capabilities .

Jeśli nie masz jeszcze projektu Xcode i chcesz tylko wypróbować produkt Firebase, możesz pobrać jedną z naszych próbek szybkiego startu .

Utwórz projekt Firebase

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

Zarejestruj swoją aplikację w Firebase

Aby używać Firebase w 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 już dodałeś aplikację do swojego projektu Firebase, kliknij Dodaj aplikację , aby wyświetlić opcje platformy.

  3. Wprowadź identyfikator pakietu swojej aplikacji w polu Identyfikator pakietu .

  4. (Opcjonalnie) Wprowadź 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 pobrać plik konfiguracyjny Firebase dla platform Apple ( GoogleService-Info.plist ).

  2. Przenieś plik konfiguracyjny do katalogu głównego projektu Xcode. Jeśli zostanie wyświetlony monit, wybierz opcję dodania pliku konfiguracyjnego do wszystkich celów.

Jeśli w projekcie masz 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 File > Add Packages .
  2. Po wyświetleniu monitu dodaj repozytorium Firebase Apple platforms SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wybierz bibliotekę Firebase Cloud Messaging.
  5. Aby optymalnie korzystać z usługi Firebase Cloud Messaging, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie pakietu Firebase SDK dla Google Analytics do swojej aplikacji. Możesz wybrać bibliotekę bez kolekcji 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 uwierzytelniający APN do Firebase. Jeśli nie masz jeszcze klucza uwierzytelniającego APNs, utwórz go w Apple Developer Member Center .

  1. W swoim projekcie w konsoli Firebase wybierz ikonę koła zębatego, wybierz Ustawienia projektu , a następnie wybierz kartę Cloud Messaging .

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

  3. Przejdź do lokalizacji, w której zapisałeś klucz, wybierz go i kliknij Otwórz . Dodaj identyfikator klucza dla 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, z których korzysta delegat aplikacji. Na przykład, aby użyć Cloud Firestore i uwierzytelniania:

    SwiftUI

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

    Szybki

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cel C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Skonfiguruj udostępnioną instancję FirebaseApp w metodzie application application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    SwiftUI

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

    Szybki

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

    Cel C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Jeśli używasz SwiftUI, musisz utworzyć delegata aplikacji i dołączyć go do struktury App za pośrednictwem UIApplicationDelegateAdaptor lub NSApplicationDelegateAdaptor . Musisz także wyłączyć przełączanie delegatów aplikacji. Aby uzyskać więcej informacji, zobacz instrukcje SwiftUI .

    SwiftUI

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

Zarejestruj się, aby otrzymywać powiadomienia zdalne

Podczas uruchamiania lub w wybranym momencie przepływu aplikacji zarejestruj swoją aplikację, aby otrzymywać powiadomienia zdalne. Zadzwoń registerForRemoteNotifications , jak pokazano:

Szybki


UNUserNotificationCenter.current().delegate = self

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

application.registerForRemoteNotifications()

Cel C


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

[application registerForRemoteNotifications];

Uzyskaj dostęp do tokena rejestracji

Aby wysłać wiadomość do określonego urządzenia, musisz znać token rejestracji tego urządzenia. Ponieważ aby ukończyć ten samouczek, musisz wprowadzić token w polu w kompozytorze powiadomień , pamiętaj, aby skopiować token lub bezpiecznie go przechowywać po pobraniu.

Domyślnie zestaw SDK FCM generuje token rejestracji dla wystąpienia aplikacji klienckiej podczas uruchamiania aplikacji. Podobnie jak token urządzenia APNs, ten token umożliwia wysyłanie ukierunkowanych powiadomień do dowolnej konkretnej instancji 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 metody komunikatów FIRMessagingDelegate messaging:didReceiveRegistrationToken: :. Zestaw SDK FCM pobiera nowy lub istniejący token podczas pierwszego uruchomienia aplikacji oraz za każdym razem, gdy token jest aktualizowany lub unieważniany. We wszystkich przypadkach zestaw FCM SDK wywołuje messaging:didReceiveRegistrationToken: z prawidłowym tokenem.

Token rejestracji może ulec zmianie, gdy:

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

Ustaw delegata wiadomości

Aby otrzymać tokeny rejestracji, zaimplementuj protokół delegowania 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 delegowania komunikatów, można ustawić delegata na application:didFinishLaunchingWithOptions: na siebie.

Szybki

Messaging.messaging().delegate = self

Cel C

[FIRMessaging messaging].delegate = self;

Pobieranie bieżącego tokena rejestracji

Tokeny rejestracyjne są dostarczane za pomocą metody messaging:didReceiveRegistrationToken: . Ta metoda jest zwykle wywoływana raz na uruchomienie aplikacji z tokenem rejestracji. Kiedy ta metoda jest wywoływana, jest to idealny czas na:

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

Możesz pobrać token bezpośrednio za pomocą token(completion:) . Jeśli pobieranie tokenu nie powiedzie się w jakikolwiek sposób, zostanie wyświetlony 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 zostanie zaktualizowany, podaj delegata zgodnego z protokołem delegowania komunikatów. Poniższy przykład rejestruje delegata i dodaje odpowiednią metodę delegowania:

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żesz nasłuchiwać NSNotification o nazwie kFIRMessagingRegistrationTokenRefreshNotification zamiast dostarczać metodę delegata. Właściwość token zawsze ma bieżącą wartość tokenu.

Wyślij wiadomość z powiadomieniem

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

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

  3. W konsoli Firebase otwórz stronę Wiadomości .

  4. Jeśli to Twoja pierwsza wiadomość, wybierz Utwórz swoją pierwszą kampanię .

    1. Wybierz Wiadomości powiadomień Firebase i wybierz Utwórz .
  5. W przeciwnym razie na karcie Kampanie wybierz Nowa kampania , a następnie Powiadomienia .

  6. Wprowadź treść wiadomości. Wszystkie pozostałe pola są opcjonalne.

  7. Wybierz Wyślij wiadomość testową z prawego okienka.

  8. W polu Dodaj token rejestracji FCM wprowadź token rejestracji uzyskany w poprzedniej sekcji tego przewodnika.

  9. Wybierz opcję Testuj .

Po wybraniu opcji Test docelowe urządzenie klienckie (z aplikacją w tle) powinno otrzymać powiadomienie.

Wgląd w dostarczanie wiadomości do Twojej aplikacji znajdziesz w panelu raportowania FCM , który rejestruje liczbę wiadomości wysłanych i otwartych na urządzeniach Apple i Android, a także dane dotyczące „wyświetleń” (powiadomień widzianych przez użytkowników) dla aplikacji na Androida.

Następne kroki

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