W przypadku aplikacji klienckich Apple możesz otrzymywać powiadomienia i ładunki danych do 4096 bajtów w interfejsie APNs Firebase Cloud Messaging.
Do pisania kodu klienta w języku Objective-C lub Swift zalecamy skorzystanie z narzędzia FIRMessaging API. przykład krótkiego wprowadzenia zawiera przykładowy kod dla obu języków.
Zmienne metody w Firebase Cloud Messaging
Pakiet SDK FCM zmienia metody w 2 kluczowych obszarach:
mapowanie tokena APNs
do tokena rejestracji FCM i przechwytywać dane analityczne
obsługę wywołań zwrotnych wiadomości dalej.
Deweloperzy, którzy nie chcą używać animacji, mogą
możesz go wyłączyć, dodając flagę FirebaseAppDelegateProxyEnabled
do
Info.plist i ustawiając dla niego wartość NO (wartość logiczna). Tematy w przewodnikach są
przykładowe fragmenty kodu z włączoną i wyłączoną funkcją przesuwania metod.
Dodaj Firebase do projektu Apple
Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu Apple.
Prześlij klucz uwierzytelniania APNs
Prześlij klucz uwierzytelniania APNs do Firebase. Jeśli nie masz jeszcze klucza uwierzytelniania APNs, utwórz go w Apple Developer Member Center
-
W projekcie w konsoli Firebase wybierz ikona koła zębatego, wybierz Ustawienia projektu i wybierz Komunikacja w chmurze.
-
W sekcji Klucz uwierzytelniania APN w sekcji Konfiguracja aplikacji na iOS kliknij przycisk Prześlij Przycisk
-
Przejdź do miejsca, w którym masz zapisany klucz, wybierz go i kliknij Otwórz. Dodaj identyfikator klucza (dostępny w sekcji Apple Developer Member Center) i kliknij Prześlij.
Zarejestruj się, aby otrzymywać powiadomienia zdalne
Podczas uruchamiania lub w oczekiwanym punkcie procesu aplikacji zarejestrować aplikację do otrzymywania zdalnych powiadomień. Zadzwoń do nasregisterForRemoteNotifications
jak pokazano:
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
Domyślnie pakiet SDK FCM generuje tokena rejestracji dla instancji aplikacji klienta przy uruchamianiu aplikacji. Podobnie jak token urządzenia APNs ten token pozwala wysyłać kierowane powiadomienia do dowolnej instancji aplikacji.
W taki sam sposób, w jaki platformy Apple zwykle dostarczają token urządzenia APNs przy uruchamianiu aplikacji,
FCM udostępnia token rejestracji przez FIRMessagingDelegate
Metoda messaging:didReceiveRegistrationToken:
.
Pakiet FCM SDK pobiera nowy lub istniejący token przy pierwszym uruchomieniu aplikacji oraz
za każdym razem, gdy token zostanie zaktualizowany lub unieważniony.
We wszystkich przypadkach pakiet SDK FCM wywołuje messaging:didReceiveRegistrationToken:
.
za pomocą prawidłowego tokena.
Token rejestracji może się zmienić, gdy:
- Aplikacja zostanie przywrócona na nowym urządzeniu
- Użytkownik odinstalowuje lub ponownie instaluje aplikację.
- Użytkownik czyści dane aplikacji.
Ustawianie osoby z przekazanym dostępem do wiadomości
Aby otrzymywać tokeny rejestracji, wdróż osobę z przekazanym dostępem
i ustaw właściwość delegate
w FIRMessaging
po wywołaniu
[FIRApp configure]
Jeśli na przykład osoba, której przekazano dostęp do aplikacji, spełnia warunki tej osoby
możesz ustawić przedstawiciela na stronie application:didFinishLaunchingWithOptions:
do siebie samego.
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
Pobieram bieżący token rejestracji
Tokeny rejestracji są dostarczane za pomocą metody
messaging:didReceiveRegistrationToken:
Ta metoda jest zwykle wywoływana raz na
rozpoczyna się od tokena rejestracji. Gdy ta metoda jest wywoływana, jest to idealny moment, aby:
- 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 w sytuacjach, gdy użytkownik ponownie zainstalował aplikację.
Token możesz pobrać bezpośrednio za pomocą token(completion:) Jeśli pobranie tokena nie powiodło się w jakikolwiek sposób, zgłaszany jest błąd inny 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; } }];
Możesz użyć tej metody w dowolnym momencie, aby uzyskać dostęp do tokena, zamiast przechowywać go .
Odświeżanie tokenów monitorowania
Aby otrzymywać powiadomienia za każdym razem, gdy token zostanie zaktualizowany, podaj przedstawiciela zgodnego z protokołem przekazywania wiadomości. Ten przykład umożliwia rejestrowanie delegat i dodaje odpowiednią metodę:
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. }
Możesz też nasłuchiwać NSNotification
o nazwie
kFIRMessagingRegistrationTokenRefreshNotification
zamiast podawania metody delegowania. Właściwość tokena zawsze ma parametr
bieżącej wartości tokena.
Przewijanie wyłączone: mapowanie tokena APNs i token rejestracji
Jeśli masz wyłączone przesuwanie metod lub tworzysz aplikację SwiftUI, musisz wykonać
bezpośrednio zmapuj swój token APNs na token rejestracji FCM. Zaimplementuj tag
Metoda application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
do
pobierz token APNs, a następnie ustaw parametr Messaging
apnsToken
.
usługa:
Swift
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Messaging.messaging().apnsToken = deviceToken }
Objective-C
// With "FirebaseAppDelegateProxyEnabled": NO - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [FIRMessaging messaging].APNSToken = deviceToken; }
Po wygenerowaniu tokena rejestracji FCM będziesz mieć do niego dostęp i nasłuchiwać zdarzeń odświeżania przy użyciu tych samych metod, co w przypadku przesuwania .
Zapobiegaj automatycznemu inicjowaniu
Po wygenerowaniu tokena rejestracji FCM biblioteka przesyła
i danych konfiguracji. Jeśli chcesz zobaczyć
wulgaryzmy
włącz subskrypcję od użytkowników, możesz zapobiec generowaniu tokenów podczas konfiguracji,
wyłączyć FCM. Aby to zrobić, dodaj wartość metadanych do pliku Info.plist
(nie do pliku
GoogleService-Info.plist
):
FirebaseMessagingAutoInitEnabled = NO
Aby ponownie włączyć FCM, możesz wykonać wywołanie w czasie działania aplikacji:
Swift
Messaging.messaging().autoInitEnabled = true
Objective-C
[FIRMessaging messaging].autoInitEnabled = YES;
Po ustawieniu ta wartość będzie się utrzymywać w przypadku ponownych uruchomień aplikacji.
Dalsze kroki
Po skonfigurowaniu klienta Apple możesz dodać obsługę wiadomości i inne, bardziej zaawansowane funkcje do Twojej aplikacji. Więcej informacji znajdziesz w tych przewodnikach:
- Odbieranie wiadomości w aplikacji Apple
- Wysyłaj wiadomości związane z tematami
- Wysyłanie do grup urządzeń