Ответ
Да, есть опыт работы с Firebase Cloud Messaging (FCM) для отправки и обработки push-уведомлений. Основные моменты:
- Регистрация устройства – получение FCM-токена через
FirebaseMessaging.getInstance().token. - Обработка уведомлений – переопределение
FirebaseMessagingServiceдля кастомной логики при получении. - Отображение – создание канала уведомлений (для 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. Это когда ты не конкретному устройству, а целой группе (типа "пользователи_акции") рассылку делаешь. Удобная штука, если не спамить, как последний пидарас.
В общем, ничего космического, но тонкостей — овердохуища. Главное — каналы не забыть и тестировать на реальных девайсах, потому что в эмуляторе эта хуйня может вести себя иначе.