Что такое топики в пушах

Ответ

Топики (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 топиков. Не думаю, что тебе столько надо, но знать стоит — вдруг ты какой маньяк.

Название топика тоже не абы какое можно придумать. Только буковки, циферки да некоторые знаки: черточки, точки, проценты. Не пытайся назвать его «хуй с горы» — не прокатит, выкинет ошибку, ядрёна вошь.

И да, главный нюанс — скорость. Рассылка по топикам может идти чуть дольше, чем отправка прямо на конкретный девайс. Не на день, конечно, но если тебе критично, чтобы уведомление прилетело в ту же миллисекунду, то это не лучший выбор. А так — штука мощная и удобная, для новостей, акций или глобальных объявлений — то, что надо.