Интеграция SDK чата SendBird в мобильное приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция SDK чата SendBird в мобильное приложение
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Интеграция SDK чата SendBird в мобильное приложение

SendBird — не просто «подключить и работает». SDK тяжёлый: iOS-версия добавляет ~15 МБ к бинарнику, Android — около 10 МБ AAR. Плюс WebSocket-соединение, которое нужно грамотно инициализировать, переподключать при смене сети и корректно гасить в background. Разберём, где обычно ломается интеграция и как сделать её правильно.

Инициализация и аутентификация

iOS

SendbirdChat.initialize(params: InitParams(applicationId: "APP_ID")) вызывается однократно в application(_:didFinishLaunchingWithOptions:). Соединение:

SendbirdChat.connect(userId: userId, accessToken: token) { user, error in
    guard let user else { return }
    // Соединение установлено
}

Токен получаете с вашего бэкенда — не хардкодите его в клиенте. SendBird выдаёт session token с TTL; при истечении срока SDK вызывает SessionDelegate.sessionTokenDidRequireRefresh, там запрашиваете новый токен у своего API и возвращаете через completionHandler.

На Android аналогично: SendbirdChat.init(InitParams(applicationId, context, useCaching = true)). useCaching = true включает локальный кэш на Room — сообщения доступны офлайн без дополнительного кода.

Типичная ошибка при инициализации

Вызов connect до завершения initialize. SDK работает асинхронно; если вызвать connect синхронно сразу после initialize — получите SendbirdError.initializationNotFinished. Нужно ждать completion block инициализации или, на Android, CompletionHandler.

Каналы и сообщения

SendBird оперирует двумя типами каналов: GroupChannel (приватный, по приглашению) и OpenChannel (публичный, как IRC). Для большинства мессенджеров нужен GroupChannel.

Создание или получение канала 1-на-1:

let params = GroupChannelCreateParams()
params.userIds = [currentUserId, targetUserId]
params.isDistinct = true  // важно: не создаёт дубль если канал уже есть
GroupChannel.createChannel(params: params) { channel, error in ... }

isDistinct = true — ключевой параметр. Без него каждый вызов создаёт новый канал между теми же пользователями.

Получение истории и realtime

channel.getMessagesByTimestamp(timestamp, params) — пагинация назад от временной метки. Для realtime подписываемся через addChannelDelegate:

SendbirdChat.addChannelDelegate(self, identifier: "ChatVC")
// В delegate:
func channel(_ sender: BaseChannel, didReceive message: BaseMessage) {
    // Добавляем в dataSource, обновляем collectionView
}

На Android — addChannelHandler. Важно: removeChannelDelegate / removeChannelHandler при уничтожении экрана, иначе — утечка памяти и дублирование событий.

Push-уведомления

iOS

Регистрируем APNs-токен в SendBird:

SendbirdChat.registerDevicePushToken(deviceToken, unique: true) { status, error in ... }

unique: true заменяет предыдущий токен устройства — нужно при переустановке. В AppDelegate.application(_:didReceiveRemoteNotification:) проверяем SendbirdChat.isHandledRemoteNotification(userInfo) — если true, SDK сам декодирует payload.

Android

Через FCM: в FirebaseMessagingService.onNewToken вызываем SendbirdChat.registerPushToken(token, unique = true). В onMessageReceivedSendbirdChat.handleRemoteMessageData(remoteMessage.data) для обработки SendBird-уведомлений.

Частая проблема: уведомления приходят, когда приложение свёрнуто, но не приходят когда открыто — потому что забыли убрать SendbirdChat.setAutoBackgroundDetection(false) в нужных сценариях или не обработали foreground-case.

Кастомизация UI vs UIKit SDK

SendBird предлагает готовый UIKit (SwiftUI/Compose-компоненты) — быстрый старт, но ограниченная кастомизация. Если дизайн нестандартный — работаем с Core SDK напрямую, строим UI сами. Практика: UIKit подходит для MVP за 1-2 дня, кастомный UI — 3-5 дней дополнительно.

Офлайн и переподключение

На iOS подписываемся на NetworkObserver или NWPathMonitor; при восстановлении сети вызываем SendbirdChat.connect повторно. SDK сам синхронизирует пропущенные сообщения через MessageCollection — если использовать MessageCollectionDelegate, подсветка новых сообщений происходит автоматически.

На Android useCaching = true + MessageCollection делают то же самое без ручного управления.

Этапы работы

Настройка SendBird приложения в консоли → интеграция SDK (CocoaPods/SPM на iOS, Gradle на Android) → аутентификация с вашим бэкендом → реализация каналов и сообщений → push-уведомления → тестирование переподключений и edge-кейсов.

Сроки

Базовая интеграция с готовым UIKit — 2-3 дня. Кастомный UI на Core SDK — 5-7 дней. Стоимость рассчитывается индивидуально после анализа требований.