Інтеграція 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
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція SDK чату SendBird у мобільний застосунок

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

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

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")
// У делегаті:
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-케이с.

Кастомізація 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 днів. Вартість розраховується індивідуально після аналізу вимог.