Udostępnij za pośrednictwem


Google Cloud Messaging

Ostrzeżenie

Google wycofał GCM od 10 kwietnia 2018 r. Następujące dokumenty i przykładowe projekty mogą nie być już obsługiwane. Interfejsy API serwera GCM i klienta firmy Google zostaną usunięte zaraz po 29 maja 2019 r. Firma Google zaleca migrowanie aplikacji GCM do usługi Firebase Cloud Messaging (FCM). Aby uzyskać więcej informacji na temat wycofywania i migracji usługi GCM, zobacz Google Przestarzałe komunikaty w chmurze.

Aby rozpocząć korzystanie z usługi Firebase Cloud Messaging za pomocą platformy Xamarin, zobacz Firebase Cloud Messaging.

Google Cloud Messaging (GCM) to usługa, która ułatwia przesyłanie komunikatów między aplikacjami mobilnymi i aplikacjami serwerowymi. Ten artykuł zawiera omówienie sposobu działania usługi GCM i wyjaśniono, jak skonfigurować usługi Google Services, aby aplikacja mogła korzystać z usługi GCM.

Google Cloud Messaging logo

Ten temat zawiera ogólne omówienie sposobu kierowania komunikatów przez usługę Google Cloud Messaging między aplikacją a serwerem aplikacji oraz zawiera procedurę krok po kroku na potrzeby uzyskiwania poświadczeń, aby aplikacja mogła korzystać z usług GCM.

Omówienie

Google Cloud Messaging (GCM) to 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. Aplikacja kliencka to aplikacja z obsługą usługi GCM, która działa na urządzeniu. Serwer aplikacji (dostarczony przez Ciebie lub Twoją firmę) to serwer obsługujący usługę GCM, z którym aplikacja kliencka komunikuje się za pośrednictwem usługi GCM:

GCM resides between the client app and the app server

Za pomocą usługi GCM serwery aplikacji mogą wysyłać komunikaty do jednego urządzenia, grupy urządzeń lub wielu urządzeń, które są subskrybowane do tematu. Aplikacja kliencka może używać usługi GCM do subskrybowania komunikatów podrzędnych z serwera aplikacji (na przykład do odbierania powiadomień zdalnych). Ponadto usługa GCM umożliwia aplikacjom klienckim wysyłanie nadrzędnych komunikatów z powrotem do serwera aplikacji.

Google Cloud Messaging w akcji

Gdy komunikaty podrzędne są wysyłane z serwera aplikacji do aplikacji klienckiej, serwer aplikacji wysyła komunikat do serwera połączenia usługi GCM; serwer połączeń usługi GCM z kolei przekazuje komunikat do urządzenia, na którym jest uruchomiona aplikacja kliencka. 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 działają, serwer połączeń GCM 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 GCM będzie kolejkować komunikaty nadrzędne z aplikacji klienckiej do serwera aplikacji, jeśli serwer aplikacji jest niedostępny.

Usługa GCM 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 GCM:

  • Klucz interfejsu API — klucz interfejsu API zapewnia serwerowi aplikacji dostęp do usług Google; Usługa GCM używa tego klucza do uwierzytelniania serwera aplikacji. Przed rozpoczęciem korzystania z usługi GCM należy najpierw uzyskać klucz interfejsu API z konsoli deweloperów Google, tworząc projekt. Klucz interfejsu API powinien być bezpieczny; Aby uzyskać więcej informacji na temat ochrony klucza interfejsu API, zobacz Najlepsze rozwiązania dotyczące bezpiecznego korzystania z kluczy interfejsu API.

  • Identyfikator nadawcy — identyfikator nadawcy autoryzuje serwer aplikacji do aplikacji klienckiej — jest to unikatowy numer identyfikujący serwer aplikacji, który może wysyłać komunikaty do aplikacji klienckiej. Identyfikator nadawcy jest również numerem projektu; identyfikator nadawcy jest uzyskiwany z konsoli Google Developers Console podczas rejestrowania projektu.

  • Token rejestracji — token rejestracji to tożsamość usługi GCM aplikacji klienckiej na danym urządzeniu. Token rejestracji jest generowany w czasie wykonywania — aplikacja otrzymuje token rejestracji podczas pierwszego rejestrowania w usłudze GCM podczas uruchamiania na urządzeniu. Token rejestracji autoryzuje wystąpienie aplikacji klienckiej (uruchomione na tym konkretnym urządzeniu) do odbierania komunikatów z usługi GCM.

  • Identyfikator aplikacji — tożsamość aplikacji klienckiej (niezależnie od dowolnego urządzenia), która rejestruje się w celu odbierania komunikatów z usługi GCM. W systemie Android identyfikator aplikacji to nazwa pakietu zarejestrowana w AndroidManifest.xml, na przykład com.xamarin.gcmexample.

Konfigurowanie usługi Google Cloud Messaging (w dalszej części tego przewodnika) zawiera szczegółowe instrukcje dotyczące tworzenia projektu i generowania tych poświadczeń.

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 GCM.

Rejestracja przy użyciu usługi GCM

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

App registration steps

  1. Aplikacja kliencka kontaktuje się z usługą GCM w celu uzyskania tokenu rejestracji, przekazując identyfikator nadawcy do usługi GCM.

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

  3. Aplikacja kliencka przekazuje token rejestracji do serwera aplikacji.

Serwer aplikacji buforuje token rejestracji na potrzeby kolejnej komunikacji z aplikacją kliencka. Opcjonalnie 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.

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 otrzymuje komunikaty tematu (wyjaśnione w dalszej części tego artykułu), może anulować subskrypcję tematu. Jeśli aplikacja kliencka zostanie odinstalowana z urządzenia, usługa GCM wykryje to i automatycznie powiadomi serwer aplikacji o usunięciu tokenu rejestracji.

Obsługa komunikatów podrzędnych

Gdy serwer aplikacji wysyła komunikat podrzędny do aplikacji klienckiej, wykonuje kroki przedstawione na poniższym diagramie:

Downstream messaging store and forward diagram

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

  2. Jeśli urządzenie klienckie jest niedostępne, serwer GCM przechowuje komunikat w kolejce na potrzeby późniejszej transmisji.

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

  4. Aplikacja kliencka odbiera komunikat z usługi GCM i odpowiednio go obsługuje. Jeśli na przykład komunikat jest powiadomieniem zdalnym, zostanie wyświetlony użytkownikowi.

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 (w tym przykłady kodu) dotyczące odbierania podrzędnych komunikatów GCM w systemie Android, zobacz Remote Notifications (Powiadomienia zdalne).

Obsługa komunikatów tematu

Obsługa komunikatów tematu to typ komunikatów podrzędnych, w którym serwer aplikacji wysyła jeden komunikat do wielu urządzeń aplikacji klienckich, które subskrybują temat (np. prognozę pogody). Komunikaty tematów mogą mieć maksymalnie 2 KB długości, a obsługa komunikatów tematów obejmuje maksymalnie milion subskrypcji na aplikację. Jeśli usługa GCM jest używana tylko do obsługi komunikatów tematu, aplikacja kliencka nie jest wymagana do wysyłania tokenu rejestracji na serwer aplikacji.

Obsługa komunikatów grupowych

Obsługa komunikatów grupowych to typ komunikatów podrzędnych, w którym serwer aplikacji wysyła jeden komunikat do wielu urządzeń aplikacji klienckich należących do grupy (na przykład grupy urządzeń należących do jednego użytkownika). Komunikaty grupowe mogą mieć długość maksymalnie 2 KB dla urządzeń z systemem iOS i maksymalnie 4 KB długości dla urządzeń z systemem Android. Grupa jest ograniczona do maksymalnie 20 członków.

Obsługa komunikatów nadrzędnych

Jeśli aplikacja kliencka łączy się z serwerem obsługującym program XMPP, może wysyłać komunikaty z powrotem do serwera aplikacji, jak pokazano na poniższym diagramie:

Upstream messaging diagram

  1. Aplikacja kliencka wysyła komunikat do serwera połączenia XMPP usługi GCM.

  2. Jeśli serwer aplikacji jest odłączony, serwer GCM przechowuje komunikat w kolejce na potrzeby późniejszego przekazywania.

  3. Gdy serwer aplikacji zostanie ponownie połączony, usługa GCM przekazuje komunikat do serwera aplikacji.

  4. Serwer aplikacji analizuje komunikat w celu zweryfikowania tożsamości aplikacji klienckiej, a następnie wysyła komunikat "ack" do usługi GCM w celu potwierdzenia potwierdzenia otrzymania wiadomości.

  5. Serwer aplikacji przetwarza komunikat.

Komunikaty nadrzędne firmy Google wyjaśniają, jak strukturę komunikatów zakodowanych w formacie JSON i wysyłać je do serwerów aplikacji z uruchomionym serwerem cloud Połączenie ion opartym na programie Google XMPP.

Konfigurowanie usługi Google Cloud Messaging

Przed rozpoczęciem korzystania z usług GCM w aplikacji należy najpierw uzyskać poświadczenia dostępu do serwerów GCM firmy Google. W poniższych sekcjach opisano kroki wymagane do ukończenia tego procesu:

Włączanie usług Google dla aplikacji

  1. Zaloguj się do konsoli Google Developers przy użyciu swojego konta Google (tj. adresu gmaila) i utwórz nowy projekt. Jeśli masz istniejący projekt, wybierz projekt, który chcesz włączyć za pomocą usługi GCM. W poniższym przykładzie zostanie utworzony nowy projekt o nazwie XamarinGCM :

    Creating XamarinGCM project

  2. Następnie wprowadź nazwę pakietu aplikacji (w tym przykładzie nazwa pakietu to com.xamarin.gcmexample), a następnie kliknij przycisk Kontynuuj, aby wybrać i skonfigurować usługi:

    Entering the package name

    Pamiętaj, że ta nazwa pakietu jest również identyfikatorem aplikacji.

  3. Sekcja Wybieranie i konfigurowanie usług zawiera listę usług Google, które można dodać do aplikacji. Kliknij pozycję Cloud Messaging (Obsługa komunikatów w chmurze):

    Choose Cloud Messaging

  4. Następnie kliknij pozycję WŁĄCZ USŁUGĘ GOOGLE CLOUD MESSAGING:

    Enable Google Cloud Messaging

  5. Klucz interfejsu API serwera i identyfikator nadawcy są generowane dla aplikacji. Zapisz te wartości i kliknij przycisk ZAMKNIJ:

    Server API Key and Sender ID displayed

    Ochrona klucza interfejsu API — nie jest przeznaczona do użytku publicznego. Jeśli klucz interfejsu API zostanie naruszony, nieautoryzowane serwery mogą publikować komunikaty w aplikacjach klienckich. Najlepsze rozwiązania dotyczące bezpiecznego korzystania z kluczy interfejsu API udostępniają przydatne wskazówki dotyczące ochrony klucza interfejsu API.

Wyświetlanie Ustawienia projektu

Ustawienia projektu można wyświetlić w dowolnym momencie, logując się do konsoli Google Cloud Console i wybierając projekt. Na przykład możesz wyświetlić identyfikator nadawcy, wybierając projekt w menu rozwijany w górnej części strony (w tym przykładzie projekt nosi nazwę XamarinGCM). Identyfikator nadawcy to numer projektu, jak pokazano na tym zrzucie ekranu (identyfikator nadawcy jest tutaj 9349932736):

Viewing the Sender ID

Aby wyświetlić klucz interfejsu API, kliknij pozycję API Manager, a następnie kliknij pozycję Poświadczenia:

Viewing the API key

Dalsze informacje

  • RFC 6120 i RFC 6121 wyjaśnić i zdefiniować rozszerzalny protokół obsługi komunikatów i obecności (XMPP).

Podsumowanie

Ten artykuł zawiera omówienie usługi Google Cloud Messaging (GCM). Wyjaśniono różne poświadczenia, które są używane do identyfikowania i autoryzacji komunikatów między serwerami aplikacji i aplikacjami klienckimi. Zilustrowano najbardziej typowe scenariusze obsługi komunikatów i szczegółowo opisano kroki rejestrowania aplikacji w usłudze GCM w celu korzystania z usług GCM.