Konfigurowanie aplikacji klienckiej Komunikacja w chmurze Firebase (FCM) na platformach Apple

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

  1. W projekcie w konsoli Firebase wybierz ikona koła zębatego, wybierz Ustawienia projektu i wybierz Komunikacja w chmurze.

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

  3. 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 nas registerForRemoteNotifications 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: