Udostępnij za pośrednictwem


Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) to usługa, która ułatwia obsługę komunikatów między aplikacjami mobilnymi i aplikacjami serwerowymi. W tym artykule omówiono sposób działania usługi FCM i wyjaśniono, jak skonfigurować usługi Google Services, aby aplikacja mogła korzystać z usługi FCM.

Firebase Cloud Messaging hero image

Ten temat zawiera ogólne omówienie sposobu, w jaki usługa Firebase Cloud Messaging kieruje komunikaty między aplikacją Xamarin.Android i serwerem aplikacji, a także zawiera procedurę krok po kroku służącą do uzyskiwania poświadczeń, aby aplikacja mogła korzystać z usług FCM.

Omówienie

Firebase Cloud Messaging (FCM) to międzyplatformowa usługa, która obsługuje wysyłanie, routing i kolejkowanie komunikatów między aplikacjami serwera i aplikacjami klienckimi dla urządzeń przenośnych. FCM jest następcą Google Cloud Messaging (GCM) i jest oparty na usługach Google Play.

Jak pokazano na poniższym diagramie, usługa FCM działa jako pośrednik między nadawcami komunikatów a klientami. Aplikacja kliencka to aplikacja z obsługą trybu failover, która działa na urządzeniu. Serwer aplikacji (dostarczony przez Ciebie lub Twoją firmę) to serwer obsługujący usługę FCM, z którym aplikacja kliencka komunikuje się za pośrednictwem usługi FCM. W przeciwieństwie do usługi GCM usługa FCM umożliwia wysyłanie komunikatów do aplikacji klienckich bezpośrednio za pośrednictwem graficznego interfejsu użytkownika powiadomień konsoli firebase:

FCM sits between the client app and an app server

Za pomocą usługi FCM serwery aplikacji mogą wysyłać komunikaty do jednego urządzenia, do grupy urządzeń lub do wielu urządzeń, które są subskrybowane do tematu. Aplikacja kliencka może używać usługi FCM do subskrybowania komunikatów podrzędnych z serwera aplikacji (na przykład do odbierania powiadomień zdalnych). Aby uzyskać więcej informacji na temat różnych typów komunikatów firebase, zobacz About FCM Messages (Informacje o komunikatach FCM).

Firebase Cloud Messaging w działaniu

Po wysłaniu komunikatu podrzędnego do aplikacji klienckiej z serwera aplikacji serwer aplikacji wysyła komunikat do serwera połączenia usługi FCM dostarczonego przez firmę Google; serwer połączenia usługi FCM z kolei przekazuje komunikat do urządzenia z uruchomioną aplikacją kliencką. Komunikaty mogą być wysyłane za pośrednictwem protokołu HTTP lub XMPP (rozszerzalne komunikaty i protokół Presence Protocol). Ponieważ aplikacje klienckie nie zawsze są połączone lub uruchomione, serwer połączeń FCM kolejkuje i przechowuje komunikaty, wysyłając je do aplikacji klienckich podczas ponownego nawiązywania połączenia i stają się dostępne. Podobnie usługa FCM będzie kolejkować komunikaty nadrzędne z aplikacji klienckiej do serwera aplikacji, jeśli serwer aplikacji jest niedostępny. Aby uzyskać więcej informacji na temat serwerów połączeń usługi FCM, zobacz About Firebase Cloud Messaging Server (Informacje o serwerze usługi Cloud Messaging Server — informacje o programie Firebase Cloud Messaging Server).

Usługa FCM używa następujących poświadczeń do identyfikowania serwera aplikacji i aplikacji klienckiej oraz używa tych poświadczeń do autoryzowania transakcji komunikatów za pośrednictwem usługi FCM:

  • Identyfikator nadawcy — identyfikator nadawcy jest unikatową wartością liczbową przypisaną podczas tworzenia projektu Firebase. Identyfikator nadawcy służy do identyfikowania każdego serwera aplikacji, który może wysyłać komunikaty do aplikacji klienckiej. Identyfikator nadawcy jest również numerem projektu; identyfikator nadawcy jest uzyskiwany z konsoli firebase podczas rejestrowania projektu. Przykładem identyfikatora nadawcy jest 496915549731.

  • Klucz interfejsu API — klucz interfejsu API zapewnia serwerowi aplikacji dostęp do usług Firebase; Usługa FCM używa tego klucza do uwierzytelniania serwera aplikacji. To poświadczenie jest również nazywane kluczemserwera lub kluczem internetowego interfejsu API. Przykładem klucza interfejsu API jest AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • Identyfikator aplikacji — tożsamość aplikacji klienckiej (niezależnie od dowolnego urządzenia), która rejestruje się w celu odbierania komunikatów z usługi FCM. Przykładem identyfikatora aplikacji jest 1:415712510732:android:0e1eb7a661af2460.

  • Token rejestracji — token rejestracji (nazywany również identyfikatorem wystąpienia) to tożsamość usługi FCM aplikacji klienckiej na danym urządzeniu. Token rejestracji jest generowany w czasie wykonywania — aplikacja otrzymuje token rejestracji podczas pierwszego rejestrowania w usłudze FCM podczas działania na urządzeniu. Token rejestracji autoryzuje wystąpienie aplikacji klienckiej (uruchomione na tym konkretnym urządzeniu) do odbierania komunikatów z usługi FCM. Przykładem tokenu rejestracji jest fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (bardzo długi ciąg).

Konfigurowanie usługi Firebase Cloud Messaging (w dalszej części tego przewodnika) zawiera szczegółowe instrukcje dotyczące tworzenia projektu i generowania tych poświadczeń. Podczas tworzenia nowego projektu w konsoli firebase zostanie utworzony plik poświadczeń o nazwie google-services.json — dodaj ten plik do projektu platformy Xamarin.Android zgodnie z opisem w artykule Remote Notifications with FCM (Zdalne powiadomienia za pomocą usługi FCM).

W poniższych sekcjach opisano sposób użycia tych poświadczeń, gdy aplikacje klienckie komunikują się z serwerami aplikacji za pośrednictwem usługi FCM.

Rejestracja w usłudze FCM

Aplikacja kliencka musi najpierw zarejestrować się w usłudze FCM przed rozpoczęciem obsługi komunikatów. Aplikacja kliencka musi wykonać kroki rejestracji pokazane na poniższym diagramie:

App registration steps diagram

  1. Aplikacja kliencka kontaktuje się z usługą FCM w celu uzyskania tokenu rejestracji, przekazania identyfikatora nadawcy, klucza interfejsu API i identyfikatora aplikacji do usługi FCM.

  2. Usługa FCM zwraca token rejestracji do aplikacji klienckiej.

  3. Aplikacja kliencka (opcjonalnie) przekazuje token rejestracji do serwera aplikacji.

Serwer aplikacji buforuje token rejestracji na potrzeby kolejnej komunikacji z aplikacją kliencka. Serwer aplikacji może wysłać potwierdzenie z powrotem do aplikacji klienckiej, aby wskazać, że token rejestracji został odebrany. Po wykonaniu tego uzgadniania aplikacja kliencka może odbierać komunikaty z (lub wysyłać komunikaty do) serwera aplikacji. Aplikacja kliencka może otrzymać nowy token rejestracji, jeśli stary token zostanie naruszony (zobacz Remote Notifications with FCM (Powiadomienia zdalne z usługą FCM ), aby zapoznać się z przykładem sposobu odbierania aktualizacji tokenu rejestracji przez aplikację).

Gdy aplikacja kliencka nie chce już odbierać komunikatów z serwera aplikacji, może wysłać żądanie do serwera aplikacji w celu usunięcia tokenu rejestracji. Jeśli aplikacja kliencka zostanie odinstalowana z urządzenia, usługa FCM wykryje to i automatycznie powiadomi serwer aplikacji o usunięciu tokenu rejestracji.

Obsługa komunikatów podrzędnych

Na poniższym diagramie przedstawiono sposób przechowywania i przekazywania komunikatów podrzędnych przez usługę Firebase Cloud Messaging:

FCM uses store and forward for downstream messaging

Gdy serwer aplikacji wysyła komunikat podrzędny do aplikacji klienckiej, używa następujących kroków, jak pokazano na powyższym diagramie:

  1. Serwer aplikacji wysyła komunikat do usługi FCM.

  2. Jeśli urządzenie klienckie nie jest dostępne, serwer FCM przechowuje komunikat w kolejce na potrzeby późniejszej transmisji. Komunikaty są przechowywane w magazynie FCM przez maksymalnie 4 tygodnie (aby uzyskać więcej informacji, zobacz Ustawianie cyklu życia komunikatu).

  3. Gdy urządzenie klienckie jest dostępne, usługa FCM przekazuje komunikat do aplikacji klienckiej na tym urządzeniu.

  4. Aplikacja kliencka odbiera komunikat z usługi FCM, przetwarza go i wyświetla użytkownikowi. Jeśli na przykład komunikat jest powiadomieniem zdalnym, zostanie wyświetlony użytkownikowi w obszarze powiadomień.

W tym scenariuszu obsługi komunikatów (w którym serwer aplikacji wysyła komunikat do pojedynczej aplikacji klienckiej), komunikaty mogą mieć długość do 4 kB.

Aby uzyskać szczegółowe informacje na temat odbierania podrzędnych komunikatów FCM w systemie Android, zobacz Remote Notifications with FCM (Powiadomienia zdalne za pomocą usługi FCM).

Obsługa komunikatów tematu

Obsługa komunikatów tematu umożliwia serwerowi aplikacji wysyłanie komunikatu do wielu urządzeń, które zdecydowały się na określony temat. Możesz również tworzyć i wysyłać komunikaty tematu za pomocą graficznego interfejsu użytkownika powiadomień konsoli firebase. Usługa FCM obsługuje routing i dostarczanie komunikatów tematu do subskrybowanych klientów. Ta funkcja może służyć do obsługi komunikatów, takich jak alerty pogodowe, notowania giełdowe i wiadomości nagłówkowe.

Topic messaging diagram

Poniższe kroki są używane w komunikatach tematu (po otrzymaniu tokenu rejestracji przez aplikację kliencką, jak wyjaśniono wcześniej):

  1. Aplikacja kliencka subskrybuje temat, wysyłając komunikat subskrypcji do usługi FCM.

  2. Serwer aplikacji wysyła komunikaty tematu do usługi FCM w celu dystrybucji.

  3. Usługa FCM przekazuje komunikaty tematu do klientów, którzy zasubskrybowali ten temat.

Aby uzyskać więcej informacji na temat obsługi komunikatów w temacie Firebase, zobacz Komunikaty tematów firmy Google w systemie Android.

Konfigurowanie usługi Firebase Cloud Messaging

Przed rozpoczęciem korzystania z usług FCM w aplikacji należy utworzyć nowy projekt (lub zaimportować istniejący projekt) za pośrednictwem konsoli Firebase Console. Wykonaj następujące kroki, aby utworzyć projekt Firebase Cloud Messaging dla aplikacji:

  1. Zaloguj się do konsoli Firebase przy użyciu konta Google (tj. adresu Gmail) i kliknij pozycję UTWÓRZ NOWY PROJEKT:

    Create New Project button

    Jeśli masz istniejący projekt, kliknij pozycję Importuj projekt Google.

  2. W oknie dialogowym Tworzenie projektu wprowadź nazwę projektu i kliknij pozycję UTWÓRZ PROJEKT. W poniższym przykładzie zostanie utworzony nowy projekt o nazwie XamarinFCM :

    Create a Project dialog

  3. W konsoli Firebase Overview (Omówienie konsoli Firebase) kliknij pozycję Add Firebase to your Android app (Dodaj bazę firebase do aplikacji systemu Android):

    Add Firebase to your Android app

  4. Na następnym ekranie wprowadź nazwę pakietu aplikacji. W tym przykładzie nazwa pakietu to com.xamarin.fcmexample. Ta wartość musi być zgodna z nazwą pakietu aplikacji systemu Android. Pseudonim aplikacji można również wprowadzić w polu Pseudonim aplikacji:

    Entering FCM Example as the app nickname

  5. Jeśli aplikacja używa linków dynamicznych, zaproszeń lub uwierzytelniania Google, musisz również wprowadzić certyfikat podpisywania debugowania. Aby uzyskać więcej informacji na temat lokalizowania certyfikatu podpisywania, zobacz Znajdowanie podpisu MD5 lub SHA1 magazynu kluczy. W tym przykładzie certyfikat podpisywania jest pusty.

  6. Kliknij pozycję DODAJ APLIKACJĘ:

    Clicking the Add App button

    Klucz interfejsu API serwera i identyfikator klienta są generowane automatycznie dla aplikacji. Te informacje są pakowane w pliku google-services.json, który jest automatycznie pobierany po kliknięciu przycisku DODAJ APLIKACJĘ. Pamiętaj, aby zapisać ten plik w bezpiecznym miejscu.

Aby zapoznać się ze szczegółowym przykładem dodawania google-services.json do projektu aplikacji w celu odbierania komunikatów powiadomień wypychanych usługi FCM w systemie Android, zobacz Remote Notifications with FCM (Powiadomienia zdalne za pomocą usługi FCM).

Dalsze informacje

Podsumowanie

Ten artykuł zawiera omówienie usługi Firebase Cloud Messaging (FCM). Wyjaśniono różne poświadczenia, które są używane do identyfikowania i autoryzacji komunikatów między serwerami aplikacji i aplikacjami klienckimi. Zilustrował on scenariusze rejestracji i komunikatów podrzędnych oraz szczegółowo kroki rejestrowania aplikacji w usłudze FCM w celu korzystania z usług FCM.