Gcm android что это

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

Сначала нужно прописать разрешения:

Затем ресивер и сервис:

* заменить на ваш пакет (у меня com.habrahabr.gcm)

Затем в корневом каталоге пакета создаем класс GCMIntentService, наследуемый от GCMBaseIntentService:
И уже после этого в главном активити прописываем:

Теперь все готово, за исключением отправки самих уведомлений с сервера, но думаю, что для одной статьи этого пока достаточно.

Источник

Что такое GSM в телефоне и зачем это нужно?

Современные технологии сотовой связи позволяют мобильному устройству по-разному взаимодействовать с выбранной сетью.

Благодаря встроенному передатчику сигнала телефон получает возможность совершать и принимать вызовы, отправлять SMS, а также подключаться к интернету. Все эти функции на базовом уровне обеспечиваются общепринятым стандартом связи GSM.

Наверное, практически каждому пользователю мобильного телефона приходилось встречаться с подобной аббревиатурой. Увидеть ее можно в настройках выбранного режима сети, где по соседству также располагаются WCDMA и LTE. Давайте теперь разберемся, что же такое GSM и зачем он вообще нужен.

Что такое GSM?

GSM (Global System Of Mobile Communications) — глобальный стандарт цифровой сотовой связи, обладающий сегодня наибольшим покрытием. Впервые этот режим сети появился в конце 80-х годов благодаря разработкам Европейского института стандартизации электросвязи (ETSI).

Сеть GSM, как правило, относится ко второму поколению сотовых сетей интернета (2G) и поддерживает 4 вида частот на 850, 900, 1800 и 1900 МГц. В зависимости от количества доступных диапазонов есть разные классы смартфонов, например, двухдиапазонные или трехдиапазонные.

Технология GSM предоставляет услуги передачи голосовой информации, SMS и факсимильных сообщений. Также перечень основных возможностей стандарта включает определение входящих номеров, удержание вызова и конференц-связь одновременно с несколькими абонентами.

Дальность действия GSM-сети ограничивается 120 км, что на сегодняшний день не является проблемой ввиду большого распространения вышек сотовой связи. Тем не менее, достаточно низкая по современным стандартам скорость передачи данных (около 171,2 кбит/c) является главным недостатком GSM.

Зачем нужен GSM в телефоне?

В данное время на смену связи и интернета GSM постепенно приходят более совершенные технологии, такие как WCDMA и LTE (4G). Благодаря повышенной пропускной способности доступная скорость отправки и получения информации возросла до 3,6 Мбит/с (3G). За счет этого пользователи получают возможность не только оперативно загружать большие файлы, но и просматривать видео в высоком разрешении. Однако это удовольствие нельзя назвать дешевым, в особенности по сравнению с 2G-сетями. Причем здесь дело касается не только стоимости связи, но и дополнительного расхода АКБ.

Именно по этой причине в настройках смартфона можно настроить наиболее удобный режим сети. Как правило, по умолчанию там установлено значение «Автоматически», что позволяет устройству подстраиваться под доступный в текущем месте стандарт связи.

Если есть потребность в экономии заряда батареи, можно переключить смартфон в режим GSM. Это позволит не только продлить время работы, но и улучшит качество связи, если в текущей локации слабый сигнал сетей 3G/4G.

Читайте также:  Сброс планшета до заводских настроек андроид хуавей

Как включить GSM?

Чтобы внести изменения в работу сотовой связи на смартфоне (Android), нужно перейти в «Настройки», выбрать пункт «Мобильные сети» и нажать на «Режим сети». Тут можно свободно переключиться на GSM, WCDMA и LTE. Название пунктов могут отличаться — это зависит от версии ОС и фирменной оболочки.

Итоги

Несмотря на распространение 3G и 4G, GSM-интернет по-прежнему остается актуальным. Переключившись на этот стандарт связи в подходящий момент, можно заметно снизить нагрузку на аккумулятор телефона (при условии, что не нужна высокая скорость интернета).

Источник

Подробнее о реализации поддержки GCM на Android-клиенте

Тут уже писали об GCM. Для чего эта статья?

Верно, писали. Буквально на этой неделе на Хабре была опубликована статья GCM – новый сервис Push-уведомлений от Google (если вы еще не знакомы с Google Cloud Messaging for Android, то советую прочитать её перед прочтением этой статьи, тем более в моей статье не описываются процесс создания проекта с GCM). Не знаю использовал её автор GCM в реальном приложении или нет, а вот мне пришлось. Поэтому-то я и хочу описать кое-что, чему не нашлось места в предыдущей статье, или что не было объяснено. Добавить это все комментарием в предыдущую статью, боюсь, невыполнимая задача.

Необходимые разрешения

  • Тут всё ясно, без доступа к интернету GCM нам и не нужен
  • GCM требует доступ к Google-аккаунту
    По этому поводу в прошлой теме даже был спор, но никто из участников не решил посмотреть в исходных код. Документация этот момент умалчивает, и лишь говорит, что возможно вы захотите захватить PowerManager.WakeLock . Так вот, если вы пользуетесь стандартной библиотекой GCM, то вам придется добавлять такое разрешение.

Вкратце механизм работы такой: наше приложение подписывается на получение широковещательных запросов. При получении запроса мы устанавливаем полученному Intent’у имя класса ( setClassName() ) в имя нашего сервиса расширяющего GCMBaseIntentService , затем захватываем WakeLock с флагом PowerManager.PARTIAL_WAKE_LOCK (не даем уснуть только CPU, экран и прочее спит спокойно), запускаем Intent как сервис, по выходу из onHandleIntent сервиса освобождаем WakeLock .

Не поверили и не стали добавлять это разрешение, и в итоге получаем вот такое исключение:

Создаем свое собственное разрешение и сами его запрашиваем. Это мы делаем для того, чтобы никто кроме нас не смог получать наши сообщения.

Примечание: если вы выставили minSdkVersion в 16 или выше (Jelly Bean и последующие версии), то это разрешение вам не нужно (года через 2, надеюсь, можно будет опускать).

  • Собственно разрешение на регистрацию в GCM и получение сообщений.
  • Изменяется ли код регистрации (registationId)?

    Рассмотрим код из приложения-примера:

    Вроде бы других условий нет. Так что, не изменяется? Если перейти по этой ссылке: http://developer.android.com/intl/ru/guide/google/gcm/adv.html#reg-state, можно узнать что все-таки может измениться. Таких случая два:

    1. Обновление программы
    2. Создание резервной копии и восстановление из неё

    Для проверки на обновление программы я написал небольшой класс-помощник. Может быть кому-нибудь пригодится:

    Источник

    Push уведомления в Android с помощью Firebase Cloud Messaging для начинающих

    . GCM users are strongly recommended to upgrade to FCM, in order to benefit from new FCM features today and in the future.

    В этой статье мы разберем тестовый проект и рассмотрим один подводный камень связанный с иконкой уведомления.

    • Android Studio
    • Код демо-проекта с github
    • 20 минут свободного времени

    Шаг 1.

    Скачайте демо-проект и откройте его в своей любимой Android Studio.

    Теперь нам нужно пойти в Firebase console и добавить наш проект.

    Затем нажимаем «Добавьте Firebase в свое приложение для Android».

    Название пакета, если вы все делаете по манула: «com.google.firebase.quickstart.fcm».

    На втором шаге скачиваем файл google-service.json и добавляем его к проекту.

    Нажимаем готово, зависимости уже добавлены в тестовом проекте.

    Подготовительная часть закончена, можно нажимать кнопку «Запустить приложение»

    В процессе компиляции вы можете получить 2 ошибки:

    Missing api_key/current key with Google Services 3.0.0

    В этом случае вам нужно зайти в настройки проекта и перезакачать файл google-service.json. Это странный баг, но благо легко лечится.

    Вторая ошибка — это:

    Failed to resolve: com.google.firebase:firebase-core:9.0.0

    Тогда вам нужно обновить Google Play Service и Google Repository. Ссылка на Stackoverflow.

    После запуска приложения, в Android monitor увидите наш токен. Можно отправляться тестировать. Идем в консоль, ищем наше приложение, и идем в раздел Grow->Notifications:

    Нажимаем создать сообщение:

    Вводим наши данные, нажимаем отправить и наблюдаем в Android monitor как все пришло.

    Теперь к самому интересному

    Самый частый вопрос: как поменять иконку уведомления, когда приложение работает в бэкграунде?

    Дело в том, что когда приложение находится в бэкграунде, то оно отправляется сразу в Notification center, и функция

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

    UPD: Если вы хотите, чтобы все ваши сообщения даже когда приложение в background или убито, обрабатывались с помощью

    в приложении, то отправляйте data-сообщения, т.е. без секции notification

    Ссылка на API. Для тестов можно использовать старый-добрый CURL.

    Вот в целом и все, что вам нужно знать чтобы попробовать новые push уведомления.

    Источник

    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.

    Источник

    Читайте также:  Какая самая хорошая клавиатура для андроида
    Оцените статью