Как послать push уведомление на android

Недавно коснулся отправки push уведомлений на андроид, а именно серверной стороны. Ранее сервис уведомлений гугла назывался GCM, но теперь, с сентября 2016 года он переехал на Firebase, и теперь имеет имя Firebase Cloud Messagging (FCM). GCM теперь deprecated.

Как же отправить push уведомление на android со своего сервера ?

Ответ — очень просто!

Сначала немного теории о том как вообще происходит отправка и почему push приходит на конкретный телефон. При каждой установке приложения на мобильный девайс гененрируется уникальный идентификатор установки — Registration Id. Он связывает конкретный девайс с конкретным приложением. Для того чтобы послать уведомление на определенный телефон нужно сделать POST запрос на сервер firebase, в котором передать этот registration id и тело сообщения. Можно указывать несколько registration ids, вплоть до 1000, тогда push придет на все девайсы.

https://firebase.google.com/docs/cloud-messaging/  — документация.

Дальше немного практики, приведу небольшой кусок кода который отправляет уведомление. Я делаю это с помощью Meteor, и так как это просто POST запрос, можно сделать его с помощью любого языка или фрэймворка, суть от этого не поменяется.

Основная часть — HTTP.call(), этот метод делает POST запрос на сервер fcm и передает туда необходимые параметры для отправки push notification в формате json.

headers —  заголовки, в Authorization необходимо указать ключ полученный в FCM.

data — различные параметры уведомления. Заголовок, сообщение, какой звук использовать и тд. Самый главный параметр — registration_ids, это массив регистрационных id пользователей. Именно массив, так как пользователь может пользоваться приложением на нескольких девайсах и хорошо бы отправлять «пуши» на все.

Также можно почитать:

  • Сергей Олегович Савельев

    Спасибо, Илья! Напиши, пожалуйста, про deny, allow, publish и subscribe — очень интересно. В видео документации я застрял на этом, с английским очень плохо…

    • Сергей, deny, allow, publish и subscribe, я, к сожалению, не использовал)

      • Если конечно это относится именно к пушам

        • Нет, это относится к актуальной теме 🙂 Честно признаться я по хайпу задал вопрос, на который уже получил ещё хайпа вместе с ответом 😀

  • Roman Kungourov

    Добрый день, спасибо за статью!

    Не раскрыт вопрос: как получить собственно Registration Id? Можете подсказать, куда копать?

    • Он присылается с клиента, т.е. с девайса на андроид.