Ответ
Топики (topics) в Firebase Cloud Messaging (FCM) позволяют отправлять push-уведомления группам устройств, подписанным на определенный топик. Это удобно для массовых рассылок без необходимости управлять токенами вручную.
Пример подписки на топик в Kotlin:
FirebaseMessaging.getInstance().subscribeToTopic("weather")
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d("TAG", "Subscribed to weather topic")
} else {
Log.e("TAG", "Subscription failed", task.exception)
}
}
Особенности:
- Подписка/отписка (
subscribeToTopic/unsubscribeFromTopic) работает асинхронно. - Топики поддерживают до 2000 подписок на приложение.
- Название топика может содержать буквы, цифры и
-,_,.,%.
Ограничения:
- Не подходят для персонализированных уведомлений (используйте токены).
- Задержка доставки может быть выше, чем при отправке на конкретные устройства.
Ответ 18+ 🔞
Э, слушай, смотри, что за тема такая интересная. Эти ваши топики в FCM, ну, типа как каналы на подписку. Вообще штука годная, если надо сразу на овердохуища устройств какую-нибудь дичь отправить, а не с каждым токеном отдельно ебаться.
Вот смотри, как это в коде выглядит, проще простого:
FirebaseMessaging.getInstance().subscribeToTopic("weather")
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d("TAG", "Subscribed to weather topic")
} else {
Log.e("TAG", "Subscription failed", task.exception)
}
}
Вот и вся магия, ёпта. Нажал кнопочку — и ты уже подписан на «weather». Хочешь отписаться — unsubscribeFromTopic вызови. Главное помни, что это всё асинхронно, то есть не моментально. Отправил запрос и иди чай пей, оно само в фоне сделается.
Но тут, конечно, не без подводных камней, я тебе скажу. Во-первых, топик — это не для личных сообщений. Нельзя через него Ивану отдельную хуйню отправить, а Петру — другую. Это как громкоговоритель на районе: крикнул «Погода хуёвая!» — и всем пришло. Для персональных писем нужны токены устройств, тут уж никак.
Во-вторых, есть лимиты. Приложение может подписаться в сумме где-то на 2000 топиков. Не думаю, что тебе столько надо, но знать стоит — вдруг ты какой маньяк.
Название топика тоже не абы какое можно придумать. Только буковки, циферки да некоторые знаки: черточки, точки, проценты. Не пытайся назвать его «хуй с горы» — не прокатит, выкинет ошибку, ядрёна вошь.
И да, главный нюанс — скорость. Рассылка по топикам может идти чуть дольше, чем отправка прямо на конкретный девайс. Не на день, конечно, но если тебе критично, чтобы уведомление прилетело в ту же миллисекунду, то это не лучший выбор. А так — штука мощная и удобная, для новостей, акций или глобальных объявлений — то, что надо.