Создание Push-оповещений из Умного дома на android-смартфон через сервисы Google.

17 ноября 2018, 13:00

У Google существует межплатформенное облачное решение под названием Firebase Cloud Messaging для отправки Push-оповещений для Android, iOS и веб-приложений, которые в настоящее время могут быть использованы бесплатно.

 В настоящей статье мы рассмотрим создание простого приложения под Android из исходников демо-проекта Google FCM.

Шаг 1. Настраиваем Firebase Cloud Messaging

Перед использованием FCM служб в приложении, необходимо создать новый проект (или импортировать существующий проект) с помощью консоли Firebase.

Войдите в консоль Firebase с вашей учетной записью Google (т. е. ваш адрес электронной почты Gmail) и нажмите кнопку «Добавить проект»:

  • Если у вас есть существующий проект, нажмите кнопку импортировать проект Google.
  • Заполните необходимые поля проекта:

  • В консоли Firebase Project Overview нажмите кнопку «Добавить Firebase» в приложение Android и выполните шаги настройки.

  • При появлении запроса введите имя своего приложения по умолчанию «com.google.firebase.quickstart.fcm». Ключ API сервера и идентификатор клиента автоматически создадутся после регистрации приложения. Эта информация помещается в файл google-services.json, который необходимо загрузить и сохранить в надежном месте. Вы можете загрузить этот файл снова в любое время.

На этом предварительную настройку Firebase Cloud Messaging можно завершить.

Шаг 2. Собираем приложение в Android Studio

  • Скачайте и установите последнюю версию Android Studio.
  • Скачайте исходники демо-проекта с github. Нам потребуется проект, расположенный в каталоге messaging.
  • Поместите ранее скачанный JSON-файл в каталог «messaging\app» как показано на рисунке выше.
  • Запустите Android Studio и выберете пункт меню Open an existing Android Studio project.

  • Укажите расположение вашего проекта и запустите его.
  • Дождитесь завершения синхронизации.
  • Для функционирования нашего приложения нам будет достаточно его отладочной версии, без формирования подписанного сертификата. Компилируем приложение, выполнив Build -> Build Bundle(s) / APK(s) -> Build APK(s), как показан ниже:
  • Скомпилированное приложение app-debug.apk, размещенное по адресу …\app\build\outputs\apk\debug, копируем на свой телефон и устанавливаем его.

Шаг 3. Отправка Push-оповещений

  • Для отправки Push-оповещений из своего Умного дома на телефон с установленным приложением нам потребуется Token приложения Ключ сервера.
  • Token получаем непосредственно из приложения, нажав LOG TOKEN.
  • Ключ сервера получаем из консоли Firebase в настройках проекта на вкладке Cloud Messaging. Для упрощенной отправки используем Устаревший ключ сервера.

  • Можно протестировать свое приложение непосредственное из консоли Firebase. В боковой панели слева выбираем Cloud Messaging и создаем Новое уведомление.
  • Заполняем поля Сообщения: Заголовок (необязательно) и Текст сообщения. Нажимаем Тестирование на устройстве:
  • Вставляем Token приложения:
  • Далее выбираем наше приложение из выпадающего списка, пощелкиваем все остальные поля до конца и публикуем сообщение. Вы должны получить на своем телефоне PUSH-оповещение:

  • Умный дом может отправлять PUSH-оповещения на телефон через сервис Firebase Cloud Messaging путем отправки json данных методом HTTP POST запроса на адрес https://fcm.googleapis.com/fcm/send с содержанием:
  1. body: {"to": "здесь указывается Token приложения", "notification":{"title" : "Ваш заголовок", "body" : "Текст сообщения"}};
  2. headers: {"Authorization":"key=Здесь указывается Ключ сервера"}.
  • Пример отправки PUSH-оповещения через CURL:

curl -s "https://fcm.googleapis.com/fcm/send" -H "Authorization: key=AIzaSy**************" -H "Content-Type: application/json" -d '{"to": " fEzintBBJk8:APA91bHuUlRNhzgIKf7Y3T5z*****************************", "notification":{"title" : "TITLE", "body" : "BODY"}}'
  • Пример отправки PUSH-оповещения через Node-RED:
[{"id":"1da8ccd6.dd58c3","type":"function","z":"43db40f1.909be","name":"set payload and headers","func":"msg.payload = {\"to\": \"fEzintBBJk8:APA91bHuUlRNhzgIKf7Y3T5z*****************************\", \"notification\":{\"title\" : \"Node-RED\", \"body\" : msg.payload }};\nmsg.headers = {\"Authorization\": \"key=AIzaSy**************\"};\nreturn msg;\n","outputs":1,"noerr":0,"x":370,"y":120,"wires":[["5ae198f2.eb5b98"]]},{"id":"5ae198f2.eb5b98","type":"http request","z":"43db40f1.909be","name":"http POST to Google FCM","method":"POST","ret":"txt","url":"https://fcm.googleapis.com/fcm/send","tls":"","x":640,"y":120,"wires":[["cc6a625f.12e8e"]]},{"id":"cc6a625f.12e8e","type":"debug","z":"43db40f1.909be","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":867.0000419616699,"y":119.99994039535522,"wires":[]},{"id":"a79f7d72.479a4","type":"inject","z":"43db40f1.909be","name":"","topic":"","payload":"Hello","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":120,"wires":[["1da8ccd6.dd58c3"]]}]

Подведение итогов

В подведении итогов расскажу о доработках FCM приложения благодаря помощи и усилиям пользователя нашего сообщества Yevhen Railian. Удалось добиться отправки Push-оповещения со своим звуком + возможно менять иконку нотификации. Токен приложения теперь копируется в буфер обмена и его не нужно вытаскивать из логов вашего телефона. Исходники обновленного приложения размещены в репозитории github.

Для добавления звука в PUSH-оповещение достаточно поместить звуковой файл в формате *.mp3 в каталог res/raw. Название файла должно быть латинскими буквами в нижнем регистре без пробелов и прочих знаков (кроме нижнего подчеркивания "_"), к примеру "your_custom_notification.mp3". В каталоге уже есть 4 звуковых файла – их не удалять. 

Аналогичным способом может быть изменена стандартная иконка PUSH-оповещения. Для этого файл иконки в формате png или jpg должен быть помещен в каталог res/drawable.

Далее при отправке HTTP POST запроса в body явным методом указываем имена без расширений нашего звукового файла "sound" : "your_custom_notification" и нашей иконки "icon" : "your_custom_icon".

Спасибо за внимание!

P.S. Firebase Cloud Messaging также предоставляет возможность использовать свои службы в iOS-приложениях для получения PUSH-оповещений из Умного дома. Quickstart-исходники приложения размещены на github


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Роман Елизаров (FantomNotaBene)
    Роман Елизаров (FantomNotaBene) 9 месяцев назад

    Сложно это всё для обычных людей. Мало кто станет запариваться.

    Что-то мешает сделать готовое приложение, которому все эти звуки, иконки и прочее добавлять, например, через экран настроек?

    И еще.. уведомления будут лететь на все устройства, где установлено это приложение?

    Можно ли как-то добавить идентификаторы для устройств и указывать в том же post-запросе, куда это всё добро слать?)

  2. Евгений Ханин (khaninEA)
    Евгений Ханин (khaninEA) отредактировано 9 месяцев назад

    Врядли удасться сделать универсальное приложение, т.к. туда зашивается json-секрет вашего проекта, привязанного к google-акаунту. А рассылку по одному приложению на разные девайсы сделать можно по подписке на разные топики. Один экземпляр приложения может быть подписан не более чем на 2000 топиков, при этом при слишком частых запросах FCM серверы будут отказывать в выполнении по причине превышения квоты. Подробнее можно посмотреть в описании FCM. Все же получается удобнее, чем через рассылку смс. При желании за символический донат тот же Yevhen Railian думаю сможет помочь собрать приложение.

К списку статей

Скидки для сообщества

УЮТНЫЙ ДОМ

+7 495 797-21-74
Промокод:
SPRUT
Размер скидки:
5%

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

LifeControl

+7 495 240-81-01
Промокод:
sprut10
Размер скидки:
10%
На весь ассортимент Lifecontrol

Похожие статьи

25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
29 декабря 2018, 07:22
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.
17 июня 2019, 13:00
HomeKit - это программный framework от компании Apple, который позволяет пользователям iOS, macOS, watchOS и tvOS устройств управлять умными аксессуарами в доме, как через приложение "Дом", так и через голосовой ассистент Siri. Тем самым, делая ваш дом умным. При помощи Apple TV (tvOS) и HomePod управление возможно, но пока только на английском языке через Siri.
04 апреля 2019, 08:22
Личная жизнь мешает увлечению "умным домом"? Есть решение!
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
01 ноября 2018, 11:24
Умный дом, о чем стоит задуматься при создании умного дома, и о чем обычно забывают при этом.
15 июня 2019, 13:00
Умный дом. Зачем он нужен? Что продается в магазинах? Что такое Умный дом? На все эти, и многие другие вопросы мы постараемся дать ответ в этой статье.
20 января 2019, 15:09
Использование ESPHomeLib в связке с Home Assistant
01 августа 2019, 10:00
В этой статье мы поговорим о том, как построить систему Умный дом под ключ. Хочу сразу выделить основные ветви решений: Купить, Скачать, Настроить.
22 января 2019, 15:05
NVIDIA Shield - опыт использования спустя 10 дней