[Из песочницы] Push уведомления в Android с помощью Firebase Cloud Messaging для начинающих

Не так давно Google купили Firebase и теперь на странице с описанием GCM нас встречает радостная новость о том, что пора бы мигрировать на Firebase.

…GCM users are strongly recommended to upgrade to FCM, in order to benefit from new FCM features today and in the future.


В этой статье мы разберем тестовый проект и рассмотрим один подводный камень связанный с иконкой уведомления.

Нам понадобится:

  • Android Studio
  • Код демо-проекта с github
  • 20 минут свободного времени


Шаг 1.

Скачайте демо-проект и откройте его в своей любимой Android Studio.

Шаг 2.

Теперь нам нужно пойти в Firebase console и добавить наш проект.

e9f27bee318448cfa4cc8136a27d9d6a.png

Затем нажимаем «Добавьте Firebase в свое приложение для Android».

75a6f7aaccf645c78321847f452d727b.png

Название пакета, если вы все делаете по манула: «com.google.firebase.quickstart.fcm».

На втором шаге скачиваем файл google-service.json и добавляем его к проекту.

d5a705557d3d4d998185d852614c0f7c.png

Нажимаем готово, зависимости уже добавлены в тестовом проекте.

Шаг 3.

Подготовительная часть закончена, можно нажимать кнопку «Запустить приложение»

В процессе компиляции вы можете получить 2 ошибки:

Missing api_key/current key with Google Services 3.0.0

В этом случае вам нужно зайти в настройки проекта и перезакачать файл google-service.json. Это странный баг, но благо легко лечится.

Вторая ошибка — это:

Failed to resolve: com.google.firebase:firebase-core:9.0.0

Тогда вам нужно обновить Google Play Service и Google Repository. Ссылка на Stackoverflow.

После запуска приложения, в Android monitor увидите наш токен. Можно отправляться тестировать. Идем в консоль, ищем наше приложение, и идем в раздел Grow→Notifications:

c1775a93090e43de91e15d80149da44d.png

Нажимаем создать сообщение:

58132408834740ddbd90fbb00d8c1271.png

Вводим наши данные, нажимаем отправить и наблюдаем в Android monitor как все пришло.

Теперь к самому интересному

Самый частый вопрос: как поменять иконку уведомления, когда приложение работает в бэкграунде?

Дело в том, что когда приложение находится в бэкграунде, то оно отправляется сразу в Notification center, и функция

onMessageReceived


не срабатывает.

Чтобы использовать свои иконки уведомлений, вам нужно посылать сообщение через API, через консоль такая кастомизация на данный момент не работает.

Ссылка на API. Для тестов можно использовать старый-добрый CURL.

Еще одна полезная ссылка

Вот в целом и все, что вам нужно знать чтобы попробовать новые push уведомления.

© Habrahabr.ru