Google Cloud MessagingGoogle Cloud Messaging

Предупреждение

Google устаревшим GCM с 10 апреля 2018 г.Google deprecated GCM as of April 10, 2018. Следующие документы и примеры проектов могут больше не поддерживается.The following docs and sample projects may no longer be maintained. GCM сервер и клиентские API-интерфейсы Google удаляется как можно скорее 29 мая 2019 г.Google's GCM server and client APIs will be removed as soon as May 29, 2019. Google рекомендует перенос приложения GCM для Firebase Cloud Messaging (FCM).Google recommends migrating GCM apps to Firebase Cloud Messaging (FCM). Дополнительные сведения о прекращении GCM и миграции, см. в разделе Google не рекомендуется Cloud Messaging.For more information about GCM deprecation and migration, see Google Deprecated Cloud Messaging.

Чтобы приступить к использованию Firebase Cloud Messaging с помощью Xamarin, см. в разделе Firebase Cloud Messaging.To start using Firebase Cloud Messaging with Xamarin, see Firebase Cloud Messaging.

Google Cloud Messaging (GCM) — это служба, которая облегчает обмен сообщениями между мобильные приложения и серверные приложения. В этой статье представлен обзор принципов работы GCM, и здесь объясняется, как настроить службы Google, чтобы приложения могли использовать GCM.Google Cloud Messaging (GCM) is a service that facilitates messaging between mobile apps and server applications. This article provides an overview of how GCM works, and it explains how to configure Google Services so your app can use GCM.

Логотип Google Cloud MessagingGoogle Cloud Messaging logo

В этом разделе представлен общий обзор как Google Cloud Messaging маршрутизирует сообщения между приложением и сервером приложений, а также пошаговая процедура для получения учетных данных, таким образом, чтобы ваше приложение может использовать службы GCM.This topic provides a high-level overview of how Google Cloud Messaging routes messages between your app and an app server, and it provides a step-by-step procedure for acquiring credentials so that your app can use GCM services.

ОбзорOverview

Google Cloud Messaging (GCM) — это служба, который обрабатывает отправку, маршрутизации и их постановку в очередь сообщений между серверных приложений и мобильных клиентских приложений.Google Cloud Messaging (GCM) is a service that handles the sending, routing, and queueing of messages between server applications and mobile client apps. Объект клиентское приложение — приложение с поддержкой GCM, которое выполняется на устройстве.A client app is a GCM-enabled app that runs on a device. Сервера приложений (предоставляемое вы или ваша организация) — это сервер с поддержкой GCM, клиентское приложение обменивается данными с помощью GCM:The app server (provided by you or your company) is the GCM-enabled server that your client app communicates with through GCM:

GCM находится между приложением клиента и сервера приложенийGCM resides between the client app and the app server

С помощью GCM, серверы приложений может отправлять сообщения для одного устройства группе устройств и нескольких устройств, которые подписаны на раздел.Using GCM, app servers can send messages to a single device, a group of devices, or a number of devices that are subscribed to a topic. Клиентского приложения можно использовать GCM подписаться на подчиненных сообщения с сервера приложений (например, для получения удаленных уведомлений).Your client app can use GCM to subscribe to downstream messages from an app server (for example, to receive remote notifications). Кроме того GCM позволяет для клиентских приложений для передачи сообщений вышестоящего сервера приложений.Also, GCM makes it possible for client apps to send upstream messages back to the app server.

Сведения о реализации серверов приложений для GCM, см. в разделе о сервере подключений GCM.For information about implementing an app server for GCM, see About GCM Connection Server.

Google Cloud Messaging в действииGoogle Cloud Messaging in Action

Когда подчиненный сообщения отправляются с сервера приложений клиентского приложения, сервера приложений отправляет сообщение, соединения сервера GCM; сервере подключений GCM, в свою очередь, перенаправляет сообщение на устройство, на котором работает клиентское приложение.When downstream messages are sent from an app server to a client app, the app server sends the message to a GCM connection server; the GCM connection server, in turn, forwards the message to a device that is running your client app. Сообщения могут отправляться по протоколу HTTP или XMPP (Extensible обмена сообщениями и присутствия протокол).Messages can be sent over HTTP or XMPP (Extensible Messaging and Presence Protocol). Поскольку клиентские приложения не всегда подключен или под управлением, GCM подключения сервера ставит в очередь и сохраняет сообщения, отправкой к клиентским приложениям, повторное подключение и становятся доступными.Because client apps are not always connected or running, the GCM connection server enqueues and stores messages, sending them to client apps as they reconnect and become available. Аналогичным образом GCM будет постановки в очередь вышестоящего сообщений из клиентского приложения для сервера приложений в случае недоступности сервера приложений.Similarly, GCM will enqueue upstream messages from the client app to the app server if the app server is unavailable.

GCM использует следующие учетные данные для идентификации сервера приложений и клиентского приложения и использует эти учетные данные для авторизации операций сообщения через GCM:GCM uses the following credentials to identify the app server and your client app, and it uses these credentials to authorize message transactions through GCM:

  • Ключ APIключ API предоставляет серверу доступ приложения к службам Google; GCM использует этот ключ для проверки подлинности сервера приложений.API Key – The API key gives your app server access to Google services; GCM uses this key to authenticate your app server. Перед использованием службы GCM, сначала необходимо получить ключ API из Google Developer Console путем создания проекта.Before you can use the GCM service, you must first obtain an API key from the Google Developer Console by creating a project. Ключ API должны быть защищены; Дополнительные сведения о защите ключ API, см. в разделе рекомендации по безопасным способом с помощью ключей API.The API Key should be kept secure; for more information about protecting your API key, see Best practices for securely using API keys.

  • Идентификатор отправителякода отправителя авторизует сервера приложений для клиентского приложения – это уникальный номер, который идентифицирует используемый сервер приложения, имеет разрешение на отправку сообщений клиентского приложения.Sender ID – The Sender ID authorizes the app server to your client app – it is a unique number that identifies the app server that is permitted to send messages to your client app. Идентификатор отправителя также — номер проекта; Вы можете получить идентификатор отправителя с Google Developers Console, при регистрации проекта.The sender ID is also your project number; you obtain the sender ID from the Google Developers Console when you register your project.

  • Маркер регистрациитокена регистрации GCM удостоверение клиентского приложения на данном устройстве.Registration Token – The Registration Token is the GCM identity of your client app on a given device. Маркер регистрации создается во время выполнения – приложение получает маркер регистрации, при ее первой регистрации в GCM во время выполнения на устройстве.The registration token is generated at run time – your app receives a registration token when it first registers with GCM while running on a device. Маркер регистрации авторизует экземпляр клиентского приложения (для запуска на этом конкретном устройстве) для получения сообщений из GCM.The registration token authorizes an instance of your client app (running on that particular device) to receive messages from GCM.

  • Идентификатор приложения – удостоверение клиентского приложения (независимо от любого устройства), зарегистрированный на получение сообщений из GCM.Application ID – The identity of your client app (independent of any given device) that registers to receive messages from GCM. В Android, идентификатор приложения — это имя пакета, записанного в AndroidManifest.xml, такие как com.xamarin.gcmexample.On Android, the application ID is the package name recorded in AndroidManifest.xml, such as com.xamarin.gcmexample.

Параметр вверх Google Cloud Messaging (Далее в этом руководстве) содержатся подробные инструкции по созданию проекта и создания этих учетных данных.Setting Up Google Cloud Messaging (later in this guide) provides detailed instructions for creating a project and generating these credentials.

В следующих разделах объясняется, как используются эти учетные данные, когда клиентские приложения взаимодействуют с серверами приложений через GCM.The following sections explain how these credentials are used when client apps communicate with app servers through GCM.

Регистрации в GCMRegistration with GCM

Клиентского приложения, установленные на устройстве, сначала необходимо зарегистрировать в GCM, прежде чем обмена сообщениями может выполняться.A client app installed on a device must first register with GCM before messaging can take place. Клиентское приложение необходимо выполнить действия по регистрации, показано на следующей схеме:The client app must complete the registration steps shown in the following diagram:

Действия для регистрации приложенияApp registration steps

  1. Клиентское приложение обращается GCM, чтобы получить маркер регистрации, передав идентификатор отправителя в GCM.The client app contacts GCM to obtain a registration token, passing the sender ID to GCM.

  2. GCM возвращает маркер регистрации в клиентское приложение.GCM returns a registration token to the client app.

  3. Клиентское приложение отправляет токен регистрации для сервера приложений.The client app forwards the registration token to the app server.

Сервер приложений кэширует маркер регистрации для последующих соединений с клиентским приложением.The app server caches the registration token for subsequent communications with the client app. При необходимости сервера приложений могли отправлять подтверждение клиентское приложение, чтобы указать, что маркер регистрации было получено.Optionally, the app server can send an acknowledgement back to the client app to indicate that the registration token was received. После внесения это подтверждение, клиентское приложение может получать сообщения из (или отправлять сообщения) сервера приложений.After this handshake takes place, the client app can receive messages from (or send messages to) the app server.

Когда клиентское приложение больше не хочет получать сообщения с сервера приложений, он может отправить запрос к серверу приложений, чтобы удалить маркер регистрации.When the client app no longer wants to receive messages from the app server, it can send a request to the app server to delete the registration token. Если клиентское приложение получает сообщения раздела (описывается далее в этой статье), он может отменить подписку на раздел.If the client app is receiving topic messages (explained later in this article), it can unsubscribe from the topic. Если клиентское приложение удаляется с устройства, GCM обнаружит это и автоматически уведомляет о том, чтобы удалить маркер регистрации сервера приложений.If the client app is uninstalled from a device, GCM detects this and automatically notifies the app server to delete the registration token.

Google регистрации клиентских приложений описание процесса регистрации более подробно; здесь объясняется, отмены регистрации и отмены подписки, и описывает процесс отмены регистрации, при удалении клиентского приложения.Google's Registering Client Apps explains the registration process in more detail; it explains unregistration and unsubscription, and it describes the process of unregistration when a client app is uninstalled.

Более низком уровне обмена сообщениямиDownstream Messaging

Когда сервер приложение отправляет сообщение нисходящего потока в клиентское приложение, он состоит из этапов, показано на следующей схеме:When the app server sends a downstream message to the client app, it follows the steps illustrated in the following diagram:

Прямой диаграмма и подчиненных хранилище обмена сообщениямиDownstream messaging store and forward diagram

  1. Сервер приложений отправляет сообщение GCM.The app server sends the message to GCM.

  2. Если клиентское устройство не доступен, на сервере GCM хранятся сообщения в очередь для последующей передачи.If the client device is not available, the GCM server stores the message in a queue for later transmission.

  3. Когда клиентское устройство станет доступным, GCM отправляет сообщение в клиентское приложение на этом устройстве.When the client device is available, GCM sends the message to the client app on that device.

  4. Клиентское приложение получает сообщение из GCM и обрабатывает ее соответствующим образом.The client app receives the message from GCM and handles it accordingly. Например если сообщение является удаленного уведомления, оно выводится пользователю.For example, if the message is a remote notification, it is presented to the user.

В этом сценарии обмена сообщениями (где сервера приложений отправляет сообщение одного клиентского приложения) сообщения могут иметь длину до 4 КБ.In this messaging scenario (where the app server sends a message to a single client app), messages can be up to 4kB in length.

Подробные сведения (в том числе примеры кода) о получении подчиненных сообщений GCM в Android, см. в разделе удаленные уведомления.For detailed information (including code samples) about receiving downstream GCM messages on Android, see Remote Notifications.

Обмен сообщениями в разделеTopic Messaging

Раздел Messaging — это разновидность подчиненных обмена сообщениями, где сервер приложений отправляет одно сообщение с множества мобильных устройств приложений, которые подписаны на раздел (например, прогноз погоды).Topic Messaging is a type of downstream messaging where the app server sends a single message to multiple client app devices that subscribe to a topic (such as a weather forecast). Сообщения раздела может быть длиной до 2 КБ, а разделе обмена сообщениями поддерживает до миллиона подписок на приложение.Topic messages can be up to 2KB in length, and topic messaging supports up to one million subscriptions per app. Если GCM используется только для раздела обмена сообщениями, клиентского приложения не требуется для отправки маркера регистрации сервера приложений.If GCM is being used only for topic messaging, the client app is not required to send a registration token to the app server. Google реализации обмена сообщениями разделе объясняется, как отправлять сообщения с сервера приложения на несколько устройств, которые подписаны на определенный раздел.Google's Implementing Topic Messaging explains how to send messages from an app server to multiple devices that subscribe to a particular topic.

Группа системы обмена сообщениямиGroup Messaging

Группе Messaging — это разновидность подчиненных обмена сообщениями, где сервер приложений отправляет одно сообщение для множества приложений мобильных устройств, принадлежащих к группе (например, группы устройств, принадлежащих одному пользователю).Group Messaging is a type of downstream messaging where the app server sends a single message to multiple client app devices that belong to a group (for example, a group of devices that belong to a single user). Группа сообщений может быть размером до 2 КБ длиной для устройств iOS и до 4 КБ в длину для устройств Android.Group messages can be up to 2KB in length for iOS devices, and up to 4KB in length for Android devices. Группа — может превышать 20 элементов.A group is limited to a maximum of 20 members. Google Device Messaging группы объясняет, как серверы приложений могут отправлять одно сообщение несколько экземпляров клиентского приложения, работающие на устройствах, принадлежащих к группе.Google's Device Group Messaging explains how app servers can send a single message to multiple client app instances running on devices that belong to a group.

Вышестоящий источник обмена сообщениямиUpstream Messaging

Если клиентское приложение подключается к серверу, который поддерживает XMPP, он может отправлять сообщения на сервер приложений, как показано на следующей схеме:If your client app connects to a server that supports XMPP, it can send messages back to the app server as illustrated in the following diagram:

Вышестоящий схеме обмена сообщениямиUpstream messaging diagram

  1. Клиентское приложение отправляет сообщение на сервер подключения GCM XMPP.The client app sends a message to the GCM XMPP connection server.

  2. При отключении сервера приложений на сервере GCM хранятся сообщения в очереди для пересылки, более поздней версии.If the app server is disconnected, the GCM server stores the message in a queue for later forwarding.

  3. Если повторно подключенный сервера приложений, GCM пересылает сообщение сервера приложений.When the app server is re-connected, GCM forwards the message to the app server.

  4. Выполняет синтаксический анализ сообщения, чтобы проверить подлинность клиентского приложения для сервера приложений, а затем отправляет «подтверждение» GCM для подтверждения получения сообщения.The app server parses the message to verify the identity of the client app, then it sends an "ack" to GCM to acknowledge message receipt.

  5. Сервер приложений обрабатывает сообщение.The app server processes the message.

Google вышестоящего сообщения объясняется, как структурировать сообщения с кодировкой JSON и отправляют их серверам приложений под управлением Server подключения облака на базе XMPP от Google.Google's Upstream Messages explains how to structure JSON-encoded messages and send them to app servers that run Google's XMPP-based Cloud Connection Server.

Настройка Google Cloud MessagingSetting Up Google Cloud Messaging

Прежде чем GCM службы можно использовать в приложении, необходимо сначала получить учетные данные для доступа к серверам GCM от Google.Before you can use GCM services in your app, you must first acquire credentials for access to Google's GCM servers. В следующих разделах описаны шаги, необходимые для завершения этого процесса:The following sections describe the steps required to complete this process:

Включение службы Google для приложенияEnable Google Services for Your App

  1. Войдите в Google Developers Console Google учетной записи (например, ваш адрес электронной почты gmail), а затем создайте новый проект.Sign into the Google Developers Console with your Google account (i.e, your gmail address) and create a new project. Если у вас есть существующий проект, выберите проект, который вы хотите стать GCM с поддержкой.If you have an existing project, choose the project that you want to become GCM-enabled. В следующем примере вызывается проекта XamarinGCM создается:In the following example, a new project called XamarinGCM is created:

    Создание проекта XamarinGCMCreating XamarinGCM project

  2. Затем введите имя пакета для приложения (в данном случае является имя пакета com.xamarin.gcmexample) и нажмите кнопку продолжить, чтобы выбрать и настроить службы:Next, enter the package name for your app (in this example, the package name is com.xamarin.gcmexample) and click Continue to Choose and configure services:

    Введите имя пакетаEntering the package name

    Обратите внимание, что это имя пакета также идентификатор приложения для вашего приложения.Note that this package name is also the application ID for your app.

  3. Выбор и настройка служб разделе перечислены службы Google, которые можно добавить в приложение.The Choose and configure services section lists the Google services that you can add to your app. Нажмите кнопку Cloud Messaging:Click Cloud Messaging:

    Выберите облако обмена сообщениямиChoose Cloud Messaging

  4. Затем щелкните ВКЛЮЧИТЬ GOOGLE CLOUD MESSAGING:Next, click ENABLE GOOGLE CLOUD MESSAGING:

    Включение Google Cloud MessagingEnable Google Cloud Messaging

  5. Объект ключ API сервера и кода отправителя создаются для вашего приложения.A Server API key and a Sender ID are generated for your app. Запишите эти значения и нажмите кнопку ЗАКРЫТЬ:Record these values and click CLOSE:

    Ключ API сервера и идентификатор отправителя, отображаемыйServer API Key and Sender ID displayed

    Защитить ключ API – он не предназначен для общего использования.Protect the API key – it is not intended for public use. Если ключ API будет скомпрометирована, Неавторизованные серверы удалось публикуют сообщения для клиентских приложений.If the API key is compromised, unauthorized servers could publish messages to client applications. Рекомендации по безопасным способом с помощью ключей API предоставляет полезные рекомендации по защите ключ API.Best practices for securely using API keys provides useful guidelines for protecting your API Key.

Просмотр параметров проектаView Your Project Settings

Параметры проекта можно просмотреть в любое время при входе в консоли Google Cloud и выбрав проект.You can view your project settings at any time by signing into the Google Cloud Console and selecting your project. Например, можно просмотреть кода отправителя , выбрав проект в раскрывающемся меню в верхней части страницы (в этом примере проект называется XamarinGCM).For example, you can view the Sender ID by selecting your project in the pull down menu at the top of the page (in this example, the project is called XamarinGCM). Идентификатор отправителя — номер проекта, как показано на следующем снимке экрана (идентификатор отправителя 9349932736):The Sender ID is the Project number as shown in this screenshot (the Sender ID here is 9349932736):

Просмотр кода отправителяViewing the Sender ID

Чтобы просмотреть ключ API, нажмите кнопку API диспетчера и нажмите кнопку учетные данные:To view the API key, click API Manager and then click Credentials:

Просмотр ключа APIViewing the API key

Дополнительные сведенияFor Further Reading

  • Google регистрации клиентских приложений описывает процесс регистрации клиента, в частности, и предоставляет сведения о настройке автоматического повтора и синхронизация состояния регистрации.Google's Registering Client Apps describes the client registration process in more detail, and it provides information about configuring automatic retry and keeping the registration state in sync.

  • RFC 6120 и RFC 6121 объяснить и определить расширяемый обмена сообщениями и присутствия протокола (XMPP).RFC 6120 and RFC 6121 explain and define the Extensible Messaging and Presence Protocol (XMPP).

СводкаSummary

В этой статье предоставляются общие сведения о из Google Cloud Messaging (GCM).This article provided an overview of Google Cloud Messaging (GCM). Оно описывает различные учетные данные, которые используются для идентификации и авторизации, обмен сообщениями между серверами приложений и клиентских приложений.It explained the various credentials that are used to identify and authorize messaging between app servers and client apps. Она иллюстрирует наиболее распространенные сценарии обмена сообщениями и его подробные инструкции по регистрации приложения с помощью GCM для использования службы GCM.It illustrated the most common messaging scenarios, and it detailed the steps for registering your app with GCM to use GCM services.