Простой сервис push-уведомлений для Вашего сайта

Как известно, самое интересное происходит на стыке технологий, вот и я хочу поделиться с Вами последней своей разработкой, которая по ненадобности своей для меня стала вещью-в-себе. а сообществу может и пригодиться представляет собой сервис push-сообщений для сайта на базе livestreet.

Что такое сервис push-сообщений? Это некоторый функционал, позволяющий посылать сообщения с Вашего сайта на телефоны пользователей. Это технология сочетает в себе три составляющие:

  1. клиентское приложение (в нашем случае приложение для телефонов с ОС Android);
  2. сервис GCM, предоставляемый Googlом;
  3. серверная часть в виде плагина для LS.



Как это все работает

Для реализации сервиса необходимо получить два токена:

  • Project Number (или Sender Id) – идентификатор объединяющий клиентские приложения в группу получателей, один для всех клиентских приложений – указывается на клиенте.
  • API key – секретный серверный ключ, предназначенный для отправки сообщений на клиентские устройства – указывается на сервере.

Эти ключи можно получить здесь code.google.com/apis/console/.

Подробнее в очень хорошей статье: megadarja.blogspot.ru/2012/12/google-cloud-messaging.html

Начнем с клиентского приложения

Я думаю, уже понятно, что для каждого сайта будет уникальным Project Number и поэтому для каждого сайта должно быть уникальным андроид-приложение. Его легко можно собрать из исходников, для этого нужно:

  1. Скачать IDE для разработки под Андроид, я использовал IntelliJ IDEA Community Edition которую можно получить совершенно бесплатно здесь www.jetbrains.com/idea/download/.
  2. Установить и настроить ее (в гугле куча материала на эту тему, например этот rseleznov.blogspot.ru/2012/06/android-idea.html);
  3. Загрузить с gihub-а исходники github.com/andrey-v/BeOnlineDev – и импортировать проект в установленную IDE. Незабываем про библиотеки – нужно подключить к проекту gcm из Android SDK Manager и libGoogleAnalyticsV2 отсюда developers.google.com/analytics/devguides/collection/android/resources
  4. Изменить в приложении следующие его части:
    • В файле 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 на адрес своего сайта (обязательно со слэшем на конце).
  5. Компилируем в apk-пакет и устанавливаем на свои устройства, подробнее можно почитать здесь developer.alexanderklimov.ru/android/publish.php. Еще раз напомню, что представляемый мною сервис является демо-версией и не предназначен для использования, а является лишь основой для собственной разработки, поэтому не спешите отдавать гуглу 25$, приложение на свой телефон можно установить и другим способом.
  6. Теперь Ваше приложение готово принимать сообщение от Вашего сервера, настроим и его.

Серверная часть

Здесь все просто – загружаем плагин с гитхаба — 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 комментариев

avatar
О каких событиях уведомляется пользователь? Может ли он сам определять круг этих событий?
avatar
В файле config.php прописан перечень событий — это:
1. Уведомление об ответе на его комментарий
2. Уведомление о новом топике в блоге, в котором он состоит
3. Уведомление при новом личном сообщении*/
4. Уведомление о новом комментарии к письму в личке */
5. Уведомление пользователю о том, что его добавили в друзья */
6. Уведомление о приглашении пользователя в закрытый блог */
7. Уведомление при ответе на сообщение на стене */
8. Уведомление о новом сообщение на стене */

Другие уведомления не предусмотрены. Пользователь не может выбирать перечень присылаемых ему уведомлений. Админки у плагина нет.
avatar
Гигантский вам респект.
Попробовал ваше приложение для вашего же сайта — пришла крякозябра

htc one s
avatar
Я использую стандартный компонент Андроида WebView и думаю дело в его кодировке, но может быть и:
— Вы принимаете сообщения в AVD и в нем что-то не то;
— я зря принудительно конвертирую сообщения в приложении в UTF8$
— Ваш телефон не поддерживает кириллицу;
— другая херня.

В любом случае буду думать.
avatar
Телефон изначально русифицирован официально, ничего не ломано, абсолютно всё дефолтно.
пишите если нужно будет повторить эксперимент.
avatar
Ok.
avatar
В чём преимущество перед использованием транспорта jabber?
  • 135
  • 0
avatar
Я не рассматривал Jabber вообще, поэтому не могу ничего сказать.
avatar
Так может рассмотреть? А то тут такой секс перед тем как отправить сообщение…
Вместо того, чтобы воспользоваться уже существующим мессаджингом, городите трёхэтажку.
avatar
А для iOS есть?
avatar
Нет. Я не умею в iOS.
avatar
для php есть плагин отправки уведомлений на iOS: pecl.php.net/package/apn (пример использования: libcapn.org/php-apn/doc/html/examples.html) можно попробовать используя его сделать подобный плагин. Или модифицировать этот ;)
avatar
Дело не в отправке сообщений. Дело в том, что push-сообщения принимает программа на телефоне и ее эту программу нужно писать. То есть нужен не скрипт отправки а приложение для iФона, которое будет принимать push-сообщения.
avatar
Начиная c OS X 10.9/iOS 7 появились Web Push уведомления. Сайты могут слать уведомления и для этого не нужно приложение.
avatar
Не знал. :(
комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.