Внимание: эта статья устарела! Гуглы довольно сильно перепилили свой GCM, и теперь всё не так. Но скрипт для отправки тестовых пушей всё ещё работает, поэтому убирать статью я пока не буду и постараюсь найти время её актуализировать.
Мы привыкли писать мобильные приложения, которые обращаются к некоторому API и получают оттуда данные. А ведь бывает и обратная ситуация: отправку данных клиенту может инициировать сам сервер. Обычно это используется для так называемых Push-нотификаций.
Мне известны два способа реализации Push-нотификаций. Во-первых это Google Cloud Messaging (бывший C2DM), во-вторых Urban Airship. Про последний я почти ничего не знаю (кроме отзывов коллеги о том, что использование его сильно сажает батарейку на телефоне). А про GCM пойдет речь в посте.
Вкратце процесс выглядит так:
Есть клиентское приложение, серверная часть и облачный сервис Google.
- Клиент регистрируется в облачном сервисе Google, получает токен
- Токен отправляется серверу
- Сервер, когда ему нужно, отправляет облаку запрос с этим токеном и какими-то данным
- Между облаком и девайсом происходит гугловая магия
- Клиенту приходит Intent с данными, которые отправил сервер.
- Клиент поступает с данными, как считает нужным (например, показывает нотификацию)
Я расскажу о своем опыте использования этой технологии и выложу рабочий пример.