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

Aby rozpocząć korzystanie z FCM, utwórz najprostszy przypadek użycia: wysłanie powiadomienia testowego z narzędzia do tworzenia powiadomień do urządzenia programistycznego, gdy aplikacja działa w tle na urządzeniu. Na tej stronie znajdują się wszystkie kroki, które należy wykonać, aby to osiągnąć, od konfiguracji po weryfikację — może obejmować kroki, które już wykonałeś, jeśli skonfigurowałeś aplikację kliencką Apple dla FCM.

Dodaj Firebase do swojego projektu Apple

W tej sekcji omówiono zadania, które mogłeś wykonać, jeśli włączyłeś już inne funkcje Firebase w swojej aplikacji. W szczególności w przypadku FCM musisz przesłać klucz uwierzytelniający APNs i zarejestrować się, aby otrzymywać zdalne powiadomienia .

Warunki wstępne

  • Zainstaluj następujące elementy:

    • Xcode 14.1 lub nowszy
  • Upewnij się, że Twój projekt spełnia następujące wymagania:

    • Twój projekt musi być przeznaczony dla tych wersji platform lub nowszych:
      • iOS 11
      • macOS 10.13
      • tvOS 12
      • zegarekOS 6
  • Skonfiguruj fizyczne urządzenie Apple do uruchamiania aplikacji i wykonaj następujące zadania:

    • Uzyskaj klucz uwierzytelniający powiadomienia Apple Push dla swojego konta programisty Apple .
    • Włącz powiadomienia push w XCode w obszarze Aplikacja > Możliwości .

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

Utwórz projekt Firebase

Zanim będziesz mógł dodać Firebase do swojej aplikacji Apple, musisz utworzyć projekt Firebase, aby połączyć się z Twoją aplikacją. Odwiedź stronę Poznaj projekty Firebase, aby dowiedzieć się więcej o projektach Firebase.

Zarejestruj swoją aplikację w Firebase

Aby używać Firebase w aplikacji Apple, musisz zarejestrować 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 aplikacji w polu identyfikatora pakietu .

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

  5. Kliknij opcję Zarejestruj aplikację .

Dodaj plik konfiguracyjny Firebase

  1. Kliknij opcję Pobierz GoogleService-Info.plist , aby uzyskać plik konfiguracyjny platform Firebase 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 obiektów docelowych.

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ć zależności Firebase i zarządzać nimi.

  1. W Xcode, przy otwartym projekcie aplikacji, przejdź do File > Add Packages .
  2. Po wyświetleniu monitu dodaj repozytorium SDK platform Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę Firebase Cloud Messaging.
  5. Dodaj flagę -ObjC do sekcji Inne flagi linkera w ustawieniach kompilacji celu.
  6. 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żna wybrać bibliotekę bez kolekcji IDFA lub z kolekcją IDFA.
  7. 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 APNs do Firebase. Jeśli nie masz jeszcze klucza uwierzytelniającego APNs, pamiętaj o utworzeniu 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ę Cloud Messaging .

  2. W kluczu uwierzytelniania APN w obszarze 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 (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 instancję współdzieloną, jak pokazano:

  1. Zaimportuj moduł FirebaseCore do swojego UIApplicationDelegate , a także wszelkie inne moduły Firebase, których używa 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 aplikacji delegata application(_:didFinishLaunchingWithOptions:) metoda:

    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, zapoznaj się z instrukcjami 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ć zdalne powiadomienia

Zarejestruj aplikację przy uruchamianiu lub w żądanym momencie przepływu aplikacji, aby otrzymywać zdalne powiadomienia. Zadzwoń do 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 rejestracyjnego

Aby wysłać wiadomość na konkretne 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ń , pamiętaj o skopiowaniu tokenu lub bezpiecznym przechowywaniu go po jego pobraniu.

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

W ten sam sposób, w jaki platformy Apple zazwyczaj dostarczają token urządzenia APNs przy uruchamianiu aplikacji, FCM udostępnia token rejestracji za pośrednictwem metody messaging:didReceiveRegistrationToken: FIRMessagingDelegate 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 rejestracyjny może ulec zmianie w przypadku:

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

Ustaw delegata przesyłania wiadomości

Aby otrzymać tokeny rejestracji, zaimplementuj protokół delegowania przesyłania wiadomości 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 przesyłania wiadomości, możesz ustawić delegata na application:didFinishLaunchingWithOptions: na siebie.

Szybki

Messaging.messaging().delegate = self

Cel C

[FIRMessaging messaging].delegate = self;

Pobieranie aktualnego tokena rejestracyjnego

Tokeny rejestracyjne dostarczane są metodą messaging:didReceiveRegistrationToken: . Ta metoda jest wywoływana zazwyczaj raz na aplikację uruchamianą z tokenem rejestracji. Po wywołaniu tej metody jest to idealny moment na:

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

Możesz pobrać token bezpośrednio za pomocą token(completion:) . Jeśli w jakikolwiek sposób nie udało się pobrać tokenu, 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 tokenu

Aby otrzymywać powiadomienia za każdym razem, gdy token zostanie zaktualizowany, podaj delegata zgodnego z protokołem delegata przesyłania 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żesz nasłuchiwać NSNotification o nazwie kFIRMessagingRegistrationTokenRefreshNotification zamiast dostarczać metodę delegowania. Właściwość tokenu 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 opcję Utwórz pierwszą kampanię .

    1. Wybierz Wiadomości z powiadomieniami Firebase i wybierz Utwórz .
  5. W przeciwnym razie na zakładce Kampanie wybierz Nowa kampania , a następnie Powiadomienia .

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

  7. Wybierz opcję Wyślij wiadomość testową w prawym okienku.

  8. W polu Dodaj token rejestracyjny FCM wpisz token rejestracyjny uzyskany w poprzedniej części tego przewodnika.

  9. Wybierz Testuj .

Po wybraniu opcji Testuj docelowe urządzenie klienckie (z aplikacją działającą w tle) powinno otrzymać powiadomienie.

Wgląd w dostarczanie wiadomości do aplikacji znajdziesz w panelu 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ń widocznych przez użytkowników) w przypadku aplikacji na Androida.

Następne kroki

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