Простой сервис push-уведомлений для Вашего сайта
![](http://livestreet.ru/uploads/images/01/55/99/2013/07/30/fa2122.png)
Что такое сервис push-сообщений? Это некоторый функционал, позволяющий посылать сообщения с Вашего сайта на телефоны пользователей. Это технология сочетает в себе три составляющие:
- клиентское приложение (в нашем случае приложение для телефонов с ОС Android);
- сервис GCM, предоставляемый Googlом;
- серверная часть в виде плагина для LS.
Как это все работает
Для реализации сервиса необходимо получить два токена:
- Project Number (или Sender Id) – идентификатор объединяющий клиентские приложения в группу получателей, один для всех клиентских приложений – указывается на клиенте.
- API key – секретный серверный ключ, предназначенный для отправки сообщений на клиентские устройства – указывается на сервере.
Эти ключи можно получить здесь code.google.com/apis/console/.
Подробнее в очень хорошей статье: megadarja.blogspot.ru/2012/12/google-cloud-messaging.html
Начнем с клиентского приложения
Я думаю, уже понятно, что для каждого сайта будет уникальным Project Number и поэтому для каждого сайта должно быть уникальным андроид-приложение. Его легко можно собрать из исходников, для этого нужно:
- Скачать IDE для разработки под Андроид, я использовал IntelliJ IDEA Community Edition которую можно получить совершенно бесплатно здесь www.jetbrains.com/idea/download/.
- Установить и настроить ее (в гугле куча материала на эту тему, например этот rseleznov.blogspot.ru/2012/06/android-idea.html);
- Загрузить с gihub-а исходники github.com/andrey-v/BeOnlineDev – и импортировать проект в установленную IDE. Незабываем про библиотеки – нужно подключить к проекту gcm из Android SDK Manager и libGoogleAnalyticsV2 отсюда developers.google.com/analytics/devguides/collection/android/resources
- Изменить в приложении следующие его части:
- В файле res/values/analytics.xml параметр ga_trackingId – идентификатор проекта в Google Analytic нужный для получения статистики по приложению. Подробнее здесь: habrahabr.ru/post/148160/;
- В файле res/values/strings.xml все текстовые параметры на свои;
- В файле src/andreyv/beonline.gcm/Constants параметр GCM_SENDER_ID, на на полученный ранее Project Number, а параметр SITE_NAME на адрес своего сайта (обязательно со слэшем на конце).
- Компилируем в apk-пакет и устанавливаем на свои устройства, подробнее можно почитать здесь developer.alexanderklimov.ru/android/publish.php. Еще раз напомню, что представляемый мною сервис является демо-версией и не предназначен для использования, а является лишь основой для собственной разработки, поэтому не спешите отдавать гуглу 25$, приложение на свой телефон можно установить и другим способом.
- Теперь Ваше приложение готово принимать сообщение от Вашего сервера, настроим и его.
Серверная часть
Здесь все просто – загружаем плагин с гитхаба — github.com/andrey-v/BeOnLineLSPluginDev и в файле config/config.php, устанавливаем его стандартным способом и в параметре server_api_key указываем полученный ранее API key.
Остальные параметры показывают какие сообщения будут отсылаться плагином.
Схема работы
При запуске приложения пользователю приходиться согласиться получать push-уведомления. После этого он может авторизоваться на сайте под своей учетной записью. В этот момент приложение посылает на сервер регистрационный ключ, уникальный для каждого установленного приложения. Это идентификатор по сути своей похож на электронный почтовый адрес, который назначается гуглом этому приложению. После этого сервер, зная адрес устройства может слать на него сообщения.
Как показала практика время прихода сообщения варьируется от моментально до 15-20 минут.
Демо
Сервис функционирует установлен на моем сайте, приложение можно скачать оттуда же или с маркета
Материалы:
1. Описание Google Cloud Messaging
2. Общая схема работы клиентского приложения
3. Работа с новой версией Google Analytics v2
4. IDE для разработки под Android — IntelliJ IDEA Community Edition FREE
16 комментариев
1. Уведомление об ответе на его комментарий
2. Уведомление о новом топике в блоге, в котором он состоит
3. Уведомление при новом личном сообщении*/
4. Уведомление о новом комментарии к письму в личке */
5. Уведомление пользователю о том, что его добавили в друзья */
6. Уведомление о приглашении пользователя в закрытый блог */
7. Уведомление при ответе на сообщение на стене */
8. Уведомление о новом сообщение на стене */
Другие уведомления не предусмотрены. Пользователь не может выбирать перечень присылаемых ему уведомлений. Админки у плагина нет.
Попробовал ваше приложение для вашего же сайта — пришла крякозябра
htc one s
— Вы принимаете сообщения в AVD и в нем что-то не то;
— я зря принудительно конвертирую сообщения в приложении в UTF8$
— Ваш телефон не поддерживает кириллицу;
— другая херня.
В любом случае буду думать.
пишите если нужно будет повторить эксперимент.
Вместо того, чтобы воспользоваться уже существующим мессаджингом, городите трёхэтажку.