- GCM – новый сервис Push-уведомлений от Google
- Настройка GCM
- Google Cloud Messaging
- Overview
- Google Cloud Messaging in Action
- Registration with GCM
- Downstream Messaging
- Topic Messaging
- Group Messaging
- Upstream Messaging
- Setting Up Google Cloud Messaging
- Enable Google Services for Your App
- View Your Project Settings
- For Further Reading
- Summary
- Google Cloud Messaging
- Обзор
- Google Cloud Messaging в действии
- Регистрация в GCM
- Подчиненный обмен сообщениями
- Обмен сообщениями с темой
- Обмен сообщениями группы
- Потоковая передача сообщений
- Настройка Google Cloud Messaging
- Включение служб Google для приложения
- просмотр Параметры Project
- Дополнительные сведения
- Итоги
GCM – новый сервис Push-уведомлений от Google
Ранее в Android использовался C2DM (Cloud to Device Messaging), как сервис доставки Push-уведомлений на устройство. Но 26 июня он был официально отменен гуглом. На его место пришел новый GCM (Google Cloud Messaging).
Похожие названия. Одинаковая роль. В чем же разница ?
- Для использования GCM, необходимо получить Simple API Key в консоли Google APIs.
- Для GCM нужно получить Sender ID. Он является эквивалентом электронной почты в C2DM. Получить его можно опять-таки из консоли Google APIs, а точнее из URL:
code.google.com/apis/console/#project: - Уведомления в GCM имеют формат JSON вместе с простым текстом.
- GCM может отправлять уведомления сразу на несколько устройств.
- Теперь одно устройство с одним идентификатором регистрации может получать уведомления сразу с нескольких серверов.
- Теперь уведомления могут иметь время жизни до 4-х недель. GCM будет хранить их до истечения срока.
- Теперь можно отправлять уведомления до 4Кб с полезной нагрузкой. Это будет очень выгодно для реал-тайма различных чатов. Однако данный метод будет сильней кушать батарейку устройства.
- Теперь нет необходимости передавать идентификатор устройства на сервер, чтобы избежать повторных регистраций одного устройства. Канонический идентификатор регистрации определяется GCM по последней регистрации устройства. И если сервер отправит уведомление со старым идентификатором, то GCM вернет канонический (последний) идентификатор, на который надо будет заменить старый.
Настройка GCM
Начнем с Android Manifest
Сначала нужно прописать разрешения:
Затем ресивер и сервис:
*
Затем в корневом каталоге пакета создаем класс GCMIntentService, наследуемый от GCMBaseIntentService:
И уже после этого в главном активити прописываем:
Теперь все готово, за исключением отправки самих уведомлений с сервера, но думаю, что для одной статьи этого пока достаточно.
Источник
Google Cloud Messaging
Google deprecated GCM as of April 10, 2018. The following docs and sample projects may no longer be maintained. Google’s GCM server and client APIs will be removed as soon as May 29, 2019. Google recommends migrating GCM apps to Firebase Cloud Messaging (FCM). For more information about GCM deprecation and migration, see Google Deprecated Cloud Messaging.
To start using Firebase Cloud Messaging with Xamarin, see Firebase Cloud Messaging.
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.
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) is a service that handles the sending, routing, and queueing of messages between server applications and mobile client apps. A client app is a GCM-enabled app that runs on a device. The app server (provided by you or your company) is the GCM-enabled server that your client app communicates with through 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. Your client app can use GCM to subscribe to downstream messages from an app server (for example, to receive remote notifications). Also, GCM makes it possible for client apps to send upstream messages back to the app server.
Google Cloud Messaging in Action
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. Messages can be sent over HTTP or XMPP (Extensible Messaging and Presence Protocol). 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. Similarly, GCM will enqueue upstream messages from the client app to the app server if the app server is unavailable.
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 Key – The API key gives your app server access to Google services; GCM uses this key to authenticate your app server. Before you can use the GCM service, you must first obtain an API key from the Google Developer Console by creating a project. 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. The sender ID is also your project number; you obtain the sender ID from the Google Developers Console when you register your project.
Registration Token – The Registration Token is the GCM identity of your client app on a given device. 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. The registration token authorizes an instance of your client app (running on that particular device) to receive messages from GCM.
Application ID – The identity of your client app (independent of any given device) that registers to receive messages from GCM. On Android, the application ID is the package name recorded in AndroidManifest.xml, such as com.xamarin.gcmexample .
Setting Up Google Cloud Messaging (later in this guide) provides detailed instructions for creating a project and generating these credentials.
The following sections explain how these credentials are used when client apps communicate with app servers through GCM.
Registration with 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:
The client app contacts GCM to obtain a registration token, passing the sender ID to GCM.
GCM returns a registration token to the client app.
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. If the client app is uninstalled from a device, GCM detects this and automatically notifies the app server to delete the registration token.
Downstream Messaging
When the app server sends a downstream message to the client app, it follows the steps illustrated in the following diagram:
The app server sends the message to GCM.
If the client device is not available, the GCM server stores the message in a queue for later transmission.
When the client device is available, GCM sends the message to the client app on that device.
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.
In this messaging scenario (where the app server sends a message to a single client app), messages can be up to 4kB in length.
For detailed information (including code samples) about receiving downstream GCM messages on Android, see Remote Notifications.
Topic 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). Topic messages can be up to 2KB in length, and topic messaging supports up to one million subscriptions per app. If GCM is being used only for topic messaging, the client app is not required to send a registration token to the app server.
Group 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). Group messages can be up to 2KB in length for iOS devices, and up to 4KB in length for Android devices. A group is limited to a maximum of 20 members.
Upstream Messaging
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:
The client app sends a message to the GCM XMPP connection server.
If the app server is disconnected, the GCM server stores the message in a queue for later forwarding.
When the app server is re-connected, GCM forwards the message to the app server.
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.
The app server processes the message.
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.
Setting Up Google Cloud Messaging
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:
Enable Google Services for Your App
Sign into the Google Developers Console with your Google account (i.e, your gmail address) and create a new project. If you have an existing project, choose the project that you want to become GCM-enabled. In the following example, a new project called XamarinGCM is created:
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:
Note that this package name is also the application ID for your app.
The Choose and configure services section lists the Google services that you can add to your app. Click Cloud Messaging:
Next, click ENABLE GOOGLE CLOUD MESSAGING:
A Server API key and a Sender ID are generated for your app. Record these values and click CLOSE:
Protect the API key – it is not intended for public use. If the API key is compromised, unauthorized servers could publish messages to client applications. Best practices for securely using API keys provides useful guidelines for protecting your API Key.
View Your Project Settings
You can view your project settings at any time by signing into the Google Cloud Console and selecting your project. 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). The Sender ID is the Project number as shown in this screenshot (the Sender ID here is 9349932736):
To view the API key, click API Manager and then click Credentials:
For Further Reading
- RFC 6120 and RFC 6121 explain and define the Extensible Messaging and Presence Protocol (XMPP).
Summary
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. It illustrated the most common messaging scenarios, and it detailed the steps for registering your app with GCM to use GCM services.
Источник
Google Cloud Messaging
Нерекомендуемый GCM в Google с 10 апреля 2018 г. Следующие документы и образцы проектов могут больше не поддерживаться. API сервера и клиента GCM Google будут удалены сразу после 29 мая 2019. Google рекомендует перенести приложения GCM в Firebase Cloud Messaging (FCM). Дополнительные сведения об устаревании и миграции GCM см. в статье нерекомендуемый облачный обмен сообщениями в Google.
Чтобы приступить к использованию облачной службы обмена сообщениями Firebase с Xamarin, см. статью Firebase Cloud Messaging.
Google Cloud Messaging (GCM) — это служба, которая упрощает обмен сообщениями между мобильными приложениями и серверных приложений. В этой статье приводятся общие сведения о работе GCM и объясняется, как настроить службы Google, чтобы приложение могла использовать GCM.
В этом разделе представлен общий обзор того, как Google Cloud Messaging маршрутизирует сообщения между приложением и сервером приложений и предоставляет пошаговую процедуру для получения учетных данных, чтобы приложение может использовать службы GCM.
Обзор
Google Cloud Messaging (GCM) — это служба, которая обрабатывает отправку, маршрутизацию и очередь сообщений между серверными приложениями и мобильными клиентскими приложениями. Клиентское приложение — это приложение с поддержкой GCM, которое выполняется на устройстве. Сервер приложений (предоставленный вами или вашей организацией) — это сервер с поддержкой GCM, с которым клиентское приложение взаимодействует через gcm:
С помощью GCM серверы приложений могут отсылать сообщения на одно устройство, группу устройств или на несколько устройств, подписанных на раздел. Клиентское приложение может использовать GCM для подписки на подчиненные сообщения с сервера приложений (например, для получения удаленных уведомлений). Кроме того, GCM позволяет клиентским приложениям передавать вышестоящее сообщение обратно на сервер приложений.
Google Cloud Messaging в действии
При отправке подчиненных сообщений с сервера приложений в клиентское приложение сервер приложений отправляет сообщение на сервер подключения gcm; сервер подключения GCM, в свою очередь, перенаправляет сообщение на устройство, на котором выполняется клиентское приложение. Сообщения можно отправлять по протоколу HTTP или XMPP (расширенный протокол обмена сообщениями и протокола присутствия). Поскольку клиентские приложения не всегда подключены или выполняются, сервер подключения GCM ставит в очередь и сохраняет сообщения, отправляя их в клиентские приложения при повторном подключении и доступности. Аналогичным образом GCM помещает в очередь вышестоящее сообщение от клиентского приложения к серверу приложений, если сервер приложений недоступен.
GCM использует следующие учетные данные для указания сервера приложений и клиентского приложения и использует эти учетные данные для авторизации транзакций сообщений через GCM:
Ключ API — ключ API предоставляет серверу приложений доступ к службам Google. GCM использует этот ключ для проверки подлинности сервера приложений. Перед использованием службы GCM необходимо сначала получить ключ API из консоли Google Developer , создав проект. Ключ API должен обеспечивать безопасность; Дополнительные сведения о защите ключа API см. в статье рекомендации по безопасному использованию ключей API.
Идентификатор отправителя — идентификатор отправителя разрешает серверу приложений клиентское приложение — это уникальный номер, определяющий сервер приложений, которому разрешено отсылать сообщения в клиентское приложение. Идентификатор отправителя также является номером вашего проекта; При регистрации проекта вы получаете идентификатор отправителя из консоли разработчиков Google.
Токен регистрации— это удостоверение gcm клиентского приложения на заданном устройстве. Маркер регистрации создается во время выполнения — приложение получает маркер регистрации при первой регистрации в GCM во время выполнения на устройстве. Маркер регистрации авторизует экземпляр клиентского приложения (выполняющегося на этом конкретном устройстве) для получения сообщений от GCM.
Идентификатор приложения — удостоверение клиентского приложения (независимо от любого конкретного устройства), которое регистрируется для получения сообщений от gcm. В Android идентификатор приложения — это имя пакета, записанное в AndroidManifest.xml, например .
Настройка Google Cloud Messaging (далее в этом пошаговом окне) содержит подробные инструкции по созданию проекта и созданию этих учетных данных.
В следующих разделах объясняется, как эти учетные данные используются при взаимодействии клиентских приложений с серверами приложений через GCM.
Регистрация в GCM
Клиентское приложение, установленное на устройстве, должно сначала зарегистрироваться в GCM до того, как система обмена сообщениями может быть выполнена. Клиентское приложение должно выполнить действия по регистрации, показанные на следующей схеме:
Клиентское приложение обращается к GCM, чтобы получить маркер регистрации, передав идентификатор отправителя в GCM.
GCM возвращает маркер регистрации клиентскому приложению.
Клиентское приложение перенаправляет маркер регистрации на сервер приложений.
Сервер приложений кэширует маркер регистрации для последующего взаимодействия с клиентским приложением. При необходимости сервер приложений может отправить подтверждение обратно в клиентское приложение, чтобы указать, что получен маркер регистрации. После выполнения этого подтверждения клиентское приложение может получать сообщения от сервера приложений (или отправлять сообщения на него).
Когда клиентскому приложению больше не требуется получать сообщения с сервера приложений, оно может отправить запрос на сервер приложений для удаления маркера регистрации. Если клиентское приложение получает сообщения раздела (описанные далее в этой статье), оно может отказаться от подписки на раздел. Если клиентское приложение удалено с устройства, GCM обнаруживает это и автоматически уведомляет сервер приложений об удалении маркера регистрации.
Подчиненный обмен сообщениями
Когда сервер приложений отправляет в клиентское приложение подчиненное сообщение, оно проходит шаги, показанные на следующей схеме:
Сервер приложений отправляет сообщение в GCM.
Если клиентское устройство недоступно, сервер GCM сохраняет сообщение в очереди для последующей передачи.
Когда клиентское устройство будет доступно, GCM отправляет это сообщение клиентскому приложению на этом устройстве.
Клиентское приложение получает сообщение от GCM и соответствующим образом обрабатывает его. Например, если сообщение представляет собой удаленное уведомление, оно будет представлено пользователю.
В этом сценарии обмена сообщениями (где сервер приложений отправляет сообщение в одно клиентское приложение) размер сообщений может доставлять до 4 КБ.
Подробные сведения (включая примеры кода) о получении подчиненных сообщений GCM в Android см. в разделе Удаленные уведомления.
Обмен сообщениями с темой
Обмен сообщениями с темой — это тип подчиненного обмена сообщениями, в котором сервер приложений отправляет одно сообщение нескольким клиентским приложениям, которые подписываются на раздел (например, прогноз погоды). Сообщения в разделе могут быть 2 КБ в длину, а сообщения раздела поддерживают до 1 000 000 подписок на приложение. Если GCM используется только для обмена сообщениями с разделами, клиентскому приложению не требуется передавать маркер регистрации на сервер приложений.
Обмен сообщениями группы
Обмен сообщениями групп — это тип подчиненного обмена сообщениями, в котором сервер приложений отправляет одно сообщение нескольким клиентским приложениям, принадлежащим к группе (например, группе устройств, принадлежащих одному пользователю). Размер сообщений группы может доставлять до 2 КБ для устройств iOS и до 4 КБ для устройств Android. Группа ограничена максимум 20 участниками.
Потоковая передача сообщений
Если клиентское приложение подключается к серверу, который поддерживает XMPP, он может отправить сообщения обратно на сервер приложений, как показано на следующей схеме:
Клиентское приложение отправляет сообщение на сервер подключения GCM XMPP.
Если сервер приложений отключен, сервер GCM сохраняет сообщение в очереди для последующей пересылки.
При повторном подключении сервера приложений GCM передает сообщение на сервер приложений.
Сервер приложений анализирует сообщение, чтобы проверить подлинность клиентского приложения, а затем отправляет «ACK» в GCM для подтверждения получения сообщения.
Сервер приложений обрабатывает сообщение.
В вышестоящем сообщении Google объясняется, как структурировать сообщения в кодировке JSON и отправить их на серверы приложений, на которых выполняется облачный сервер подключения Google XMPP.
Настройка Google Cloud Messaging
Прежде чем вы сможете использовать службы GCM в своем приложении, сначала необходимо получить учетные данные для доступа к серверам GCM Google. В следующих разделах описаны шаги, необходимые для выполнения этого процесса.
Включение служб Google для приложения
Войдите в консоль разработчиков Google с помощью учетной записи Google (например, адреса Gmail) и создайте новый проект. Если у вас уже есть проект, выберите проект, который требуется включить в GCM. В следующем примере создается новый проект с именем ксамарингкм :
Затем введите имя пакета для своего приложения (в этом примере — имя пакета — com. Xamarin. гкмексампле) и нажмите кнопку продолжить, чтобы выбрать и настроить службы:
Обратите внимание, что это имя пакета также является ИДЕНТИФИКАТОРом приложения для приложения.
В разделе Выбор и Настройка служб перечислены службы Google, которые можно добавить в приложение. Щелкните облачная система обмена сообщениями.
Затем щелкните включить Google Cloud MESSAGING.
Для приложения создаются ключ API сервера и идентификатор отправителя . Запишите эти значения и нажмите кнопку Закрыть:
Защита ключа API — она не предназначена для общедоступного использования. Если ключ API скомпрометирован, Неавторизованные серверы могут публиковать сообщения в клиентских приложениях. Рекомендации по безопасному использованию ключей API предоставляют полезные рекомендации по защите ключа API.
просмотр Параметры Project
Вы можете просмотреть параметры проекта в любое время, войдя в консоль Google Cloud и выбрав свой проект. Например, можно просмотреть идентификатор отправителя , выбрав проект в раскрывающемся меню в верхней части страницы (в этом примере проект называется ксамарингкм). идентификатор отправителя — это Project номер, как показано на следующем снимке экрана (идентификатор отправителя — 9349932736):
Чтобы просмотреть ключ API, щелкните Диспетчер API , а затем — учетные данные:
Дополнительные сведения
- Rfc 6120 и RFC 6121 объясняют и определяют расширяемый протокол обмена сообщениями и присутствия (XMPP).
Итоги
В этой статье представлен обзор Google Cloud Messaging (GCM). В нем объясняются различные учетные данные, используемые для обнаружения и авторизации обмена сообщениями между серверами приложений и клиентскими приложениями. В нем проиллюстрированы наиболее распространенные сценарии обмена сообщениями и подробно описаны действия по регистрации приложения в GCM для использования служб GCM.
Источник