Wyślij wiadomość testową do aplikacji Apple w tle

Aby rozpocząć korzystanie z FCM, utwórz najprostszy przypadek użycia: wyślij testową wiadomość z powiadomieniem z  kompozytora powiadomień na urządzenie deweloperskie, gdy aplikacja działa w tle. Na tej stronie znajdziesz wszystkie kroki, które należy wykonać, aby to osiągnąć – od konfiguracji po weryfikację. Może ona obejmować kroki, które zostały już wykonane, jeśli skonfigurowano aplikację klienta na urządzenia Apple na potrzeby FCM.

Dodawanie Firebase do projektu Apple

W tej sekcji opisujemy zadania, które mogłeś(-aś) już wykonać, jeśli masz włączone inne funkcje Firebase w swojej aplikacji. W przypadku FCM musisz przesłać klucz uwierzytelniania APNszarejestrować się w celu otrzymywania powiadomień zdalnych.

Wymagania wstępne

  • Zainstaluj te elementy:

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

    • Twój projekt musi być przeznaczony na te wersje platformy lub nowsze:
      • iOS 13
      • macOS 10.15
      • tvOS 13
      • watchOS 7
  • Skonfiguruj fizyczne urządzenie Apple, na którym będzie działać Twoja aplikacja, i wykonaj te czynności:

    • Uzyskaj klucz uwierzytelniania usługi Apple Push Notification na koncie dewelopera Apple.
    • Włącz powiadomienia push w XCode w sekcji App > Capabilities (Aplikacja > Funkcje).

Jeśli nie masz jeszcze projektu Xcode i chcesz tylko wypróbować usługę Firebase, możesz pobrać jeden z naszych przykładowych projektów.

Tworzenie projektu Firebase

Zanim dodasz Firebase do aplikacji na urządzenia Apple, musisz utworzyć projekt Firebase, aby połączyć go z aplikacją. Więcej informacji o projektach Firebase znajdziesz w artykule Informacje o projektach Firebase.

Rejestrowanie aplikacji w Firebase

Aby korzystać z Firebase w aplikacji na urządzenia Apple, musisz zarejestrować ją w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.

  1. Otwórz Firebasekonsolę.

  2. W centrum strony „Opis” projektu kliknij ikonę iOS+, aby uruchomić proces konfiguracji.

    Jeśli masz już aplikację w projekcie Firebase, kliknij Dodaj aplikację, aby wyświetlić opcje platformy.

  3. W polu bundle ID wpisz identyfikator pakietu aplikacji.

  4. (Opcjonalnie) wpisz inne informacje o aplikacji: pseudonim aplikacjiidentyfikator App Store.

  5. Kliknij Zarejestruj aplikację.

Dodawanie pliku konfiguracyjnego Firebase

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

  2. Przenieś plik konfiguracyjny do katalogu głównego projektu Xcode. Jeśli pojawi się odpowiedni komunikat, wybierz opcję dodania pliku konfiguracyjnego do wszystkich miejsc docelowych.

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

Dodawanie pakietów SDK Firebase do aplikacji

Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety).
  2. Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę Firebase Cloud Messaging.
  5. Dodaj flagę -ObjC do sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji projektu.
  6. Aby w pełni korzystać z Firebase Cloud Messaging, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie do aplikacji pakietu SDK Firebase dla Google Analytics. Możesz wybrać bibliotekę bez zbierania identyfikatora IDFA lub z jego zbieraniem. Zapoznaj się z naszymi odpowiedziami na najczęstsze pytania dotyczące najnowszej organizacji modułów w Google Analytics dla pakietu SDK Firebase.
  7. Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać zależności w tle.

Prześlij klucz uwierzytelniania APNs

Prześlij klucz uwierzytelniania APNs do Firebase. Jeśli nie masz jeszcze klucza uwierzytelniania APNs, utwórz go w Centrum dla deweloperów Apple.

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

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

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

Inicjowanie Firebase w aplikacji

Musisz dodać do aplikacji kod inicjalizacji Firebase. Zaimportuj moduł Firebase i skonfiguruj udostępnioną instancję w sposób pokazany poniżej:

  1. Zaimportuj moduł FirebaseCore w pliku UIApplicationDelegate, a także inne moduły Firebase, których używa delegat aplikacji. Aby na przykład użyć właściwości Cloud FirestoreAuthentication:

    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. Skonfiguruj udostępnioną instancję FirebaseApp w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    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. Jeśli używasz SwiftUI, musisz utworzyć delegata aplikacji i dołączyć go do struktury App za pomocą UIApplicationDelegateAdaptor lub NSApplicationDelegateAdaptor. Musisz też wyłączyć zamianę delegata aplikacji. Więcej informacji znajdziesz w instrukcjach dotyczących SwiftUI.

    SwiftUI

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

Rejestrowanie powiadomień zdalnych

Zarejestruj aplikację do otrzymywania powiadomień zdalnych podczas uruchamiania lub w odpowiednim momencie w jej działaniu. Wywołaj registerForRemoteNotifications w ten sposób:

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

Dostęp do tokena rejestracji

Aby wysłać wiadomość na konkretne urządzenie, musisz znać jego token rejestracji. Aby ukończyć ten samouczek, musisz wpisać token w odpowiednim polu w  edytorze powiadomień, więc po jego pobraniu skopiuj go lub bezpiecznie przechowuj.

Domyślnie pakiet SDK FCM generuje token rejestracji dla instancji aplikacji klienckiej podczas jej uruchamiania. Podobnie jak token urządzenia APNs, ten token umożliwia wysyłanie ukierunkowanych powiadomień do dowolnej instancji aplikacji.

Podobnie jak platformy Apple zwykle dostarczają token urządzenia APNs przy uruchamianiu aplikacji, FCM udostępnia token rejestracji za pomocą metody FIRMessagingDelegatemessaging:didReceiveRegistrationToken:. Pakiet SDK FCM pobiera nowy lub istniejący token podczas pierwszego uruchomienia aplikacji oraz za każdym razem, gdy token jest aktualizowany lub unieważniany. W każdym przypadku pakiet FCM SDK wywołuje funkcję messaging:didReceiveRegistrationToken: z prawidłowym tokenem.

Token rejestracji może się zmienić, gdy:

  • Aplikacja zostanie przywrócona na nowym urządzeniu.
  • Użytkownik odinstaluje lub ponownie zainstaluje aplikację
  • Użytkownik czyści dane aplikacji.

Ustawianie osoby upoważnionej do wysyłania wiadomości

Aby otrzymywać tokeny rejestracji, zaimplementuj protokół delegata wiadomości i ustaw właściwość FIRMessaging obiektu delegate po wywołaniu funkcji [FIRApp configure]. Jeśli na przykład delegat aplikacji jest zgodny z protokołem delegata przesyłania wiadomości, możesz ustawić delegata w application:didFinishLaunchingWithOptions: na samego siebie.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Pobieranie bieżącego tokena rejestracji

Tokeny rejestracji są dostarczane metodą messaging:didReceiveRegistrationToken:. Ta metoda jest zwykle wywoływana raz na uruchomienie aplikacji z tokenem rejestracji. Wywołanie tej metody to idealny moment na:

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

Token możesz pobrać bezpośrednio za pomocą funkcji token(completion:). Jeśli pobieranie tokena nie powiedzie się z jakiegokolwiek powodu, zwracany jest błąd o wartości innej niż null.

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

Zamiast przechowywać token, możesz w każdej chwili uzyskać do niego dostęp za pomocą tej metody.

Monitorowanie odświeżania tokena

Aby otrzymywać powiadomienia o każdej aktualizacji tokena, podaj delegata zgodnego z protokołem delegata przesyłania wiadomości. W tym przykładzie rejestrujemy delegata i dodajemy odpowiednią metodę delegata:

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

Zamiast podawać metodę delegowania, możesz nasłuchiwać zdarzenia NSNotification o nazwiekFIRMessagingRegistrationTokenRefreshNotification. Właściwość tokena zawsze ma bieżącą wartość tokena.

Wysyłanie wiadomości z powiadomieniem

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

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

  3. W konsoli Firebase otwórz stronę Messaging.

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

    1. Wybierz Wiadomości z powiadomieniami Firebase i kliknij Utwórz.
  5. W przeciwnym razie na karcie Kampanie kliknij Nowa kampania, a potem Powiadomienia.

  6. Wpisz tekst wiadomości. Wszystkie pozostałe pola są opcjonalne.

  7. W panelu po prawej stronie kliknij Wyślij wiadomość testową.

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

  9. Kliknij Przetestuj.

Po kliknięciu Testuj docelowe urządzenie klienta (z aplikacją działającą w tle) powinno otrzymać powiadomienie.

Aby uzyskać informacje o dostarczaniu wiadomości do aplikacji, otwórz FCM panel raportowania, który rejestruje liczbę wysłanych i otwartych wiadomości na urządzeniach z Androidem i Apple, a także dane o „wyświetleniach” (powiadomieniach widocznych dla użytkowników) w przypadku aplikacji na Androida.

Dalsze kroki

Aby wyjść poza powiadomienia i dodać do aplikacji inne, bardziej zaawansowane funkcje, zapoznaj się z tymi artykułami: