Какой опыт работы с push-уведомлениями

Ответ

Да, есть опыт работы с Firebase Cloud Messaging (FCM) для отправки и обработки push-уведомлений. Основные моменты:

  1. Регистрация устройства – получение FCM-токена через FirebaseMessaging.getInstance().token.
  2. Обработка уведомлений – переопределение FirebaseMessagingService для кастомной логики при получении.
  3. Отображение – создание канала уведомлений (для API 26+) и использование NotificationCompat.

Пример обработки:

class MyFirebaseService : FirebaseMessagingService() {  
    override fun onMessageReceived(remoteMessage: RemoteMessage) {  
        remoteMessage.notification?.let { notif ->  
            showNotification(notif.title, notif.body)  
        }  
    }  
}  

Также работал с deep links в уведомлениях и управлением подписками на топики.

Ответ 18+ 🔞

А, блядь, FCM! Ну это ж классика, ёпта. Работал, конечно, с этой мартышкой. Всё как у людей, стандартная песня.

Первым делом, чувак, надо токен выцарапать у устройства. Это типа его уникальный паспорт в системе Фаербаза. Берёшь FirebaseMessaging.getInstance().token — и он тебе эту хуйню выплёвывает. Без этого токена ты как слепой котёнок — нихуя не отправишь. Ты его потом на свой бэкенд слать должен, чтобы он знал, куда именно пулю лететь.

Дальше самое интересное — обработка, когда уведомление уже прилетело. Тут свой сервис пишешь, наследуешься от FirebaseMessagingService. Главный метод там — onMessageReceived. Вот в него всё и валится.

class MyFirebaseService : FirebaseMessagingService() {  
    override fun onMessageReceived(remoteMessage: RemoteMessage) {  
        remoteMessage.notification?.let { notif ->  
            showNotification(notif.title, notif.body)  
        }  
    }  
}  

Смотри, что тут происходит. Прилетает remoteMessage, а в нём может быть notification — это уже готовая обёртка с заголовком и телом. Если она есть, можно сразу показывать. Но, бля, часто данные ещё и в data поле шлют, чтобы свою, более хитрожопую логику на клиенте выполнить. Это уже на твоё усмотрение.

А вот показывать — это отдельная история, ядрёна вошь. С Андроидом Орео (API 26) начался ёперный театр с каналами. Теперь нельзя просто так взять и показать нотификашку. Надо сначала канал создать, иначе пользователь её нихуя не увидит. Используешь NotificationCompat.Builder, передаёшь ему ID канала — и вперёд.

Ну и по мелочи: deep links в уведомления встраивал, чтобы при тапе открывался нужный экран в приложении. И управлял подписками на топики — subscribeToTopic / unsubscribeFromTopic. Это когда ты не конкретному устройству, а целой группе (типа "пользователи_акции") рассылку делаешь. Удобная штука, если не спамить, как последний пидарас.

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