Уведомление приложений на андроид что это такое

Уведомления в мобильном приложении бывают разных видов: Push, In-App. Каждый тип сообщения используется для разных целей и несет внутри себя разную информацию. Пуши, например могут приходить когда приложение в фоне. Сообщения внутри приложения привязаны к контексту и привлекают больше внимания.

Push уведомления

Что такое Push уведомления

Push уведомление – это короткое сообщение, которое приходит на устройство пользователя. Обычно оно показывает небольшое всплывающее окно в области уведомлений. Пуши существуют также и на iOS и даже в браузере.

Firebase Cloud Messaging (FCM)

FCM пришел на замену Google Cloud Messaging (GCM). Это облачное решение, которое доставляет сообщения. FCM – стандартное решение для пушей в Android приложении. Система сама обработает пришедшие сообщения когда программа в фоне и покажет уведомление пользователю.

Организовать должным образом Push уведомления в приложении без участия FCM у вас вряд ли получится.

Подключение FCM к проекту

Далее добавляем зависимость в gradle:

После этого вы можете отправлять Push уведомления из вашей Firebase консоли.

Важно: при такой минимальной интеграции система сама покажет уведомление, правда только когда приложение находится в фоне. Когда программа открыта – ничего не произойдет.

Обработка Push уведомления когда приложение открыто

Если вы хотите обрабатывать уведомление также, когда приложение открыто, необходимо зарегистрировать свою реализации FirebaseMessagingService:

Возможная реализация данного сервиса на Kotlin:

В самом сообщение можно послать данные, которые говорят о том, какой экран в приложении нужно открыть. Например добавить в данные productId и подразумевать это как DeepLink до конкретного продукта.

Notification channel

Начиная с Android 8 поддерживаются каналы уведомлений. Это нужно для того, чтобы пользователь смог отключить только те уведомления, которые ему не интересны. Например можно отключить все, что касается “новостей в приложении”, но оставить важные “системные” уведомления.

Иконка и цвет push уведомления

Опционально на стороне клиента можно задать какую иконку и какой цвет использовать при показе вашего сообщения. Для этого необходимо добавить соответствующую meta-data в AndroidManifest :

Если ваше приложение получает Push уведомления с вашего же сервера, то в notification payload можно настроить внешний вид сообщения.

Отправление push уведомления с сервера

Push уведомления могут отправляться с вашего сервера. Для этого необходимо реализовать Firebase Admin Sdk на стороне сервера и передать Token с клиента, чтобы backend мог знать какому пользователю отправлять сообщение.

Отправления Firebase token на свой сервер

Чтобы сервер мог понять на какое устройство отправить сообщение ему необходимо знать Token. При реализации FirebaseMessagingService нужно переопределить метод onNewToken

В данном примере я сохраняю токен в кэше, чтобы в дальнейшем отправить на сервер после того как пользователь зарегистрируется. Также прямо тут записываю токен в AppsFlyer и Airship – сервисы аналитики и отправки сообщений.

Серверная реализация Firebase Cloud Message

Описание интеграции можно найти в документации к Firebase. Остановимся только на том, что интересно нам, как андроид разработчикам. А именно то, какие типы сообщений может отсылать сервер. Это могут быть Notification Message или же Data Message

Push сообщения типа Notification message

Такие уведомления должны нравится ребятам из маркетинга. Они позволяют отправлять произвольный текст и картинку пользователю. Это в свою очередь используется для повышения вовлеченности и увеличению retention.

Данное сообщение будет обработано самой системой и показано уведомление на устройстве (если приложение в фоне). Оно также может содержать произвольные данные в data payload. Внутри notification payload можно определить разные параметры push уведомления. Через них контролируется внешний вид сообщения на стороне пользователя.

Данные, отправленные как notification payload , будут доступны в remoteMessage.notification .

Push сообщения типа Data message

Пуш уведомление может не содержать notification payload , а представлять собой лишь набор данных. В таком случае система не покажет уведомление даже если приложение в фоне. Таким образом можно доставить данные в ваше андроид приложение и обрабатывать сообщение самостоятельно.

Данные, отправленные как data payload будут доступны в remoteMessage.data .

In-app уведомления

Что такое In-app уведомления

In-app уведомления – это собирательное понятие, которое обозначает сообщения, которые вы показываете пользователю, когда тот находится внутри приложения. Внешне это может быть как heads-up сообщение, так и контент в bottomSheet. Можно сделать обычный диалог или RICH контент на весь экран.

Приложения, настройки, информация