Как работал с нотификациями в Android
Что проверяют
Работали ли вы с уведомлениями дальше примера из документации: каналы, разрешения, пуши с сервера, поведение на разных версиях Android. Следом обычно спрашивают, почему уведомление не дошло до части пользователей или чем отличаются сообщения FCM с notification и с data.
Как отвечать
Расскажите о своём проекте: какие были уведомления (чат, статусы заказа, напоминания), откуда приходили и что вы сделали сами. Опорные технические пункты:
- каналы: с Android 8.0 уведомление без
NotificationChannelне покажется. Важность задаётся при создании, дальше ей управляет пользователь, программно поднять её нельзя; - разрешение: с Android 13 нужен runtime-запрос
POST_NOTIFICATIONS. Скажите, когда вы его показывали и что делали при отказе; PendingIntent: приtargetSdk31 и выше обязателенFLAG_IMMUTABLEилиFLAG_MUTABLE, без него приложение падает. РазныеrequestCode, иначе уведомления перезапишут друг другу extras. Нажатие ведёт прямо в активити: трамплины через сервис или ресивер запрещены;- FCM: сообщение с блоком
notificationв фоне показывает система,onMessageReceivedне вызывается. Для своей логики сервер шлётdata; - оформление:
NotificationCompat, стилиBigTextStyleиMessagingStyle, группы черезsetGroup, ответ из шторки черезRemoteInput.
Закончите результатом с вашими цифрами: доля открытий, число отключений. Если пушей с сервера не было, так и скажите, расскажите про локальные уведомления и как устроили бы приём FCM.
Где спотыкаются
Пересказывают старый туториал: без канала, без запроса разрешения, PendingIntent только с FLAG_UPDATE_CURRENT. Это выдаёт, что вы давно не выпускали приложение под свежий targetSdk.
Ставят всем каналам IMPORTANCE_HIGH. Пользователь получает всплывающие окна на каждую мелочь и отключает уведомления целиком.
Не могут объяснить, почему пуш не дошёл. Причины надо знать: отключённый канал, нет разрешения, Doze и ограничения производителей на фоновую работу, неверный тип сообщения FCM.