Обмен сообщениями между облаком и устройством (Cloud to Device Messaging)

в 2:03, , рубрики: amdroid c2dm, c2dm, Cloud to Device Messaging, Разработка под android

Обмен сообщениями между облаком и Android устройством (C2DM) – это сервис, который позволяет разработчикам отправлять данные с серверов в приложения на Android устройствах. Сервис предоставляет простой и легкий механизм, который могут использовать сервера для того, чтобы сообщить мобильным приложениям о связи с сервером напрямую для получения обновлений приложения или данных пользователя. C2DM сервис управляет всеми аспектами организации очередей сообщений и доставки к целевому приложению, запущенному на целевом устройстве.

Характеристики Android сервиса C2DM

Главные характеристики C2DM:

  1. Он позволяет сторонним серверам приложений отправлять небольшие сообщения своим Android приложениям. Сервис обмена сообщениями не предназначен для отправки большого количества пользовательских данных через сообщения. Напротив, он должен использоваться для сообщения приложению, что есть новые данные на сервере, и что приложение может забрать их.
  2. Приложение на Android устройстве не нужно запускать для получения сообщений. Система запустит приложение через целевую трансляцию, когда придет сообщение, если приложение установлено с соответствующими приемником трансляции и разрешениями.
  3. Он использует существующее соединение для сервисов Google. Это требует от пользователей установки учетной записи Google на их мобильных устройствах.

Обзор архитектуры

Обмен сообщениями между облаком и устройством включает ключевые термины и понятия, которые могут быть классифицированы на два подразделения. Это:

  1. Компоненты
  2. Верительные данные

Обмен сообщениями между облаком и устройством (Cloud to Device Messaging)

Верительные данные

Идентификаторы и токены, которые используются на различных стадиях C2DM для обеспечения того, чтобы все стороны были авторизованы, и чтобы сообщение направлялось в правильное место.

Идентификатор отправителя (Sender ID)

Это электронная почта учетной записи, связанной с разработчиком приложения. Идентификатор отправителя используется в процессе регистрации для идентификации Android приложения, которому разрешается отправлять сообщения на устройство. Этот идентификатор, как правило, основывается на роли, а не на персональной учетной записи, например, my-app@gmail.com

Идентификатор приложения (Application ID)

Это идентификатор приложения, которое регистрируется для получения сообщений. Приложение определяется по имени пакета из манифеста (manifest). Это гарантирует, что сообщения нацелены на правильное приложение.

Регистрационный идентификатор (Registration ID)

Идентификатор, выданный C2DM серверами Android приложению, позволяющий ему получать сообщения. Как только приложение получает регистрационный идентификатор, оно отправляет его стороннему серверу приложений, который использует его для идентификации каждого устройства, которое зарегистрировалось для получения сообщений для данного приложения. Другими словами, регистрационный идентификатор привязан к определенному приложению, запущенному на определенном устройстве. Чтобы работала учетная запись Google для C2DM, мобильное устройство должно включать хотя бы одну авторизованную учетную запись Google.

Токен аутентификации отправителя (Sender Auth Token)

ClientLoginAuth токен, который сохраняется на стороннем сервере приложений и дает серверу приложений авторизованный доступ к сервисам Google. Токен включен в заголовок POST запросов, которые отправляют сообщения.

Жизненный цикл C2DM

Основные процессы, используемые в обмене сообщениями между облаком и устройством:

  1. Включение C2DM: Android приложение, запущенное на мобильном устройстве, регистрируется для получения сообщений.
  2. Отправка сообщения: сторонний сервер приложений отправляет сообщения на устройство.
  3. Получение сообщения: Android приложение получает сообщение от C2DM сервера.

Обмен сообщениями между облаком и устройством (Cloud to Device Messaging)

Включение C2DM

Ниже приведена последовательность событий, которые возникают, когда Android приложение, запущенное на мобильном устройстве, регистрируется для получения сообщений:

  1. Первый раз, когда приложение должно использовать сервис обмена сообщениями, оно посылает запрос регистрации C2DM серверу.
    Этот запрос регистрации включает идентификатор отправителя (это учетная запись авторизованная для отправки сообщений приложению, которая, как правило, является адресом электронной почты учетной записи, настроенной разработчиком приложения) и идентификатор приложения.
  2. C2DM сервер транслирует запрос, который дает приложению регистрационный идентификатор.
    Приложение хранит этот идентификатор для дальнейшего использования. Google может периодически обновлять регистрационный идентификатор, поэтому приложение разработано с учетом того, что запрос регистрации (registration intent) может быть вызван несколько раз.
  3. Чтобы завершить регистрацию, приложение отправляет регистрационный идентификатор серверу приложений. Сервер приложений, как правило, хранит регистрационный идентификатор в базе данных.
    Регистрационный идентификатор действует, пока приложение само не отменит регистрацию или пока Google не обновит регистрационный идентификатор для Вашего приложения.

Отправка сообщения

Чтобы сервер приложений отправлял сообщения, должны быть выполнены следующие условия:

  1. Наличие регистрационного идентификатора у приложения, который позволяет ему получать сообщения для определенного устройства.
  2. Регистрационный идентификатор хранится на сервере приложений.

Существует еще одно условие, которое необходимо для того, чтобы сервер приложений мог отправлять сообщения: Client Login authorization токен. Client Login токен авторизует сервер приложений для отправки сообщений определенному Android приложению. Сервер приложений имеет один Client Login токен для конкретного стороннего приложения и несколько регистрационных идентификаторов. Каждый регистрационный идентификатор представляет конкретное устройство, которое зарегистрировалось для использования сервиса обмена сообщениями для конкретного стороннего приложения.

Последовательность событий, которые возникают, когда сервер приложений отправляет сообщение:

  1. Сервер приложений отправляет сообщение C2DM серверам.
  2. Google ставит в очередь и сохраняет сообщение в случае, если устройство неактивно.
  3. Если устройство находится онлайн, Google отправляет сообщение устройству.
  4. На устройстве система транслирует сообщение определенному приложению через целевую трансляцию с соответствующими разрешениями, так что только целевое приложение получит сообщение. Это запускает приложение. Приложение не требует предварительного запуска для получения сообщения.
  5. Приложение обрабатывает сообщение. Если приложение осуществляет нетривиальную обработку, возможно, Вы захотите воспользоваться wake lock и сделать любую обработку в сервисе.

Приложение может отменить регистрацию C2DM, если у него больше нет необходимости получать сообщения.

Получение сообщения

Это последовательность событий, которая возникает, когда Android приложение, запущенное на мобильном устройстве, получает сообщение:

  1. Система получает входящее сообщение и извлекает необработанные пары «ключ/значение» из сообщения.
  2. Система передает пары «ключ/значение» целевому Android приложению в запросе(in a Intent) как набор дополнительных параметров.
  3. Android приложение извлекает необработанные данные из запроса (intent) по ключу и обрабатывает данные.

Автор: dmitriypr

Источник

Поделиться

* - обязательные к заполнению поля