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
- Twój projekt musi być kierowany na te wersje platformy lub nowsze:
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 push w XCode w menu App > Capabilities .
- Zaloguj się do Firebase przy użyciu swojego konta Google.
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 korzystać z Firebase w swojej aplikacji Apple, musisz zarejestrować swoją aplikację w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.
Przejdź do konsoli Firebase .
Na środku strony przeglądu projektu kliknij ikonę iOS+ , aby uruchomić przepływ pracy instalacji.
Jeśli dodałeś już aplikację do projektu Firebase, kliknij Dodaj aplikację , aby wyświetlić opcje platformy.
Wpisz identyfikator pakietu swojej aplikacji w polu identyfikatora pakietu .
Identyfikator pakietu jednoznacznie identyfikuje aplikację w ekosystemie Apple.
Znajdź swój identyfikator pakietu: otwórz swój projekt w Xcode, wybierz aplikację najwyższego poziomu w nawigatorze projektów, a następnie wybierz kartę Ogólne .
Wartością pola Identyfikator pakietu jest identyfikator pakietu (na przykład
com.yourcompany.yourproject
).Pamiętaj, że w wartości identyfikatora pakietu rozróżniana jest wielkość liter i nie można jej zmienić dla tej aplikacji Firebase po jej zarejestrowaniu w projekcie Firebase.
(Opcjonalnie) Wpisz inne informacje o aplikacji: pseudonim aplikacji i identyfikator App Store .
Pseudonim aplikacji : wewnętrzny, wygodny identyfikator, który jest widoczny tylko dla Ciebie w konsoli Firebase
App Store ID : używany przez Firebase Dynamic Links do przekierowywania użytkowników na Twoją stronę App Store oraz przez Google Analytics do importowania zdarzeń konwersji do Google Ads . Jeśli Twoja aplikacja nie ma jeszcze identyfikatora App Store, możesz dodać go później w ustawieniach projektu .
Kliknij Zarejestruj aplikację .
Dodaj plik konfiguracyjny Firebase
Kliknij Pobierz GoogleService-Info.plist , aby uzyskać plik konfiguracyjny platform Apple Firebase (
GoogleService-Info.plist
).Plik konfiguracyjny Firebase zawiera unikalne, ale nie tajne identyfikatory Twojego projektu. Aby dowiedzieć się więcej o tym pliku konfiguracyjnym, odwiedź stronę Zrozumienie projektów Firebase .
W dowolnym momencie możesz ponownie pobrać plik konfiguracyjny Firebase .
Upewnij się, że nazwa pliku konfiguracyjnego nie zawiera dodatkowych znaków, takich jak
(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ć zależności Firebase i zarządzać nimi.
- W Xcode przy otwartym projekcie aplikacji przejdź do pozycji Plik > Dodaj pakiety .
- Po wyświetleniu monitu dodaj repozytorium SDK platformy Firebase Apple:
- Wybierz bibliotekę Firebase Cloud Messaging.
- 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.
- Po zakończeniu Xcode automatycznie rozpocznie rozwiązywanie i pobieranie twoich zależności w tle.
https://github.com/firebase/firebase-ios-sdk
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 .
W swoim projekcie w konsoli Firebase wybierz ikonę koła zębatego, wybierz Ustawienia projektu , a następnie wybierz kartę Wiadomości w chmurze .
W kluczu uwierzytelniania APNs w sekcji Konfiguracja aplikacji na iOS kliknij przycisk Prześlij .
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ć do aplikacji kod inicjujący Firebase. Zaimportuj moduł Firebase i skonfiguruj udostępnioną instancję, jak pokazano:
- Zaimportuj moduł
FirebaseCore
do swojegoUIApplicationDelegate
, 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; // ...
- Skonfiguruj współużytkowane wystąpienie
FirebaseApp
, zwykle w inicjatorzeApp
lub w metodzieapplication(_:didFinishLaunchingWithOptions:)
: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 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 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 pośrednictwem messaging:didReceiveRegistrationToken:
. Ta metoda jest wywoływana zwykle 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 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ż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
Zainstaluj i uruchom aplikację na urządzeniu docelowym. Musisz zaakceptować prośbę o pozwolenie na otrzymywanie powiadomień zdalnych.
Upewnij się, że aplikacja działa w tle na urządzeniu.
Otwórz edytor powiadomień i wybierz Nowe powiadomienie .
Wpisz tekst wiadomości.
Wybierz Wyślij wiadomość testową .
W polu oznaczonym Dodaj token rejestracji FCM wprowadź token rejestracji uzyskany w poprzedniej części tego przewodnika.
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, zobacz panel 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: