Інтеграція Agora SDK для відеодзвінків у мобільному додатку

У відеодзвінках на мобільних платформах головні проблеми — lifecycle та управління токенами. Без правильного налаштування отримуєте витік ресурсів, обриви сесій та перевитрату ліцензій. Наш досвід більше 30 проектів з Agora SDK дозволив сформулювати робочий підхід. Ми гарантуємо якість інтеграції за

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Agora SDK для відеодзвінків у мобільному додатку
Складний
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

У відеодзвінках на мобільних платформах головні проблеми — lifecycle та управління токенами. Без правильного налаштування отримуєте витік ресурсів, обриви сесій та перевитрату ліцензій. Наш досвід більше 30 проектів з Agora SDK дозволив сформулювати робочий підхід. Ми гарантуємо якість інтеграції завдяки 10-річному досвіду та сертифікованим фахівцям.

Чому Agora SDK — найкращий вибір для відеодзвінків?

Agora SDK — WebRTC managed service, який бере на себе WebRTC під капотом, власну транспортну мережу SD-RTN, адаптивний бітрейт та кодеки. Порівняно з raw WebRTC, Agora SDK краще в 12 разів за швидкістю розробки (з 3 місяців до 1 тижня) та у 3 рази за обсягом коду. Правильна інтеграція Agora SDK дає скорочення витрат на інфраструктуру до 40% порівняно з іншими рішеннями.

Як правильно налаштувати токени та уникнути помилок?

Agora працює за моделлю App ID + Token. App ID — публічний ідентифікатор з консолі. Token — короткоживучий JWT, який ваш бекенд генерує через Agora Token Builder і передає клієнту при вході в канал. Для правильної інтеграції Agora SDK важливе налаштування токенів. Найчастіші помилки в продакшені: tokenExpired (109) і invalidToken (110). Token має обмежений TTL (від 24 годин до 1 години). Реалізуємо обробку через tokenPrivilegeWillExpire делегатний метод — отримуємо новий токен з бекенду та викликаємо renewToken() без розриву з'єднання.

Таблиця рекомендованих TTL токенів
Сценарій TTL Рекомендація
Стандартний 24 години Баланс безпеки та частоти оновлень
Високе навантаження 1 година Знижує ризик компрометації токена

Типова помилка: токен генерується з UID 0 на бекенді, але клієнт після joinChannel отримує конкретний UID від Agora — і при наступному renewToken передає токен під неправильний UID. Рішення: зберігаємо UID з didJoinChannel і використовуємо його при запиті нового токена.

Ініціалізація двигуна (Agora engine)

Покрокова інструкція:

  1. Ініціалізуйте двигун один раз при старті додатку.
  2. Налаштуйте токени.
  3. Підключіться до каналу.
  4. Обробіть відео.

Ініціалізація движка:

let config = AgoraRtcEngineConfig() config.appId = "YOUR_APP_ID" agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self) 
val config = RtcEngineConfig() config.mContext = context config.mAppId = "YOUR_APP_ID" config.mEventHandler = handler rtcEngine = RtcEngine.create(config) 

Не створюйте движок заново під кожен дзвінок. sharedEngine — синглтон, повторний виклик з тим же App ID повертає існуючий екземпляр. На Android RtcEngine.create() кожного разу створює новий екземпляр; попередній потрібно знищити через RtcEngine.destroy(). Інакше витік нативних ресурсів проявляється через 3–5 дзвінків. Використовуйте LifecycleObserver для автоматичного знищення движка при завершенні активності.

Підключення до каналу та обробка відео

let option = AgoraRtcChannelMediaOptions() option.clientRoleType = .broadcaster option.channelProfile = .communication agoraKit.joinChannel( byToken: token, channelId: channelName, uid: 0, mediaOptions: option ) 

uid: 0 — Agora призначає UID самостійно. Якщо потрібна прив'язка до користувача — передавайте детермінований числовий ID (UInt32).

Локальне відео виводимо через AgoraRtcVideoCanvas з setupLocalVideo(). Віддалене — через setupRemoteVideo() в делегатному методі didJoinedOfUid. Важливо: setupRemoteVideo() викликайте на main thread, інакше EXC_BAD_ACCESS при швидкому підключенні/відключенні учасників.

func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) { DispatchQueue.main.async { let canvas = AgoraRtcVideoCanvas() canvas.uid = uid canvas.renderMode = .hidden canvas.view = self.remoteVideoView self.agoraKit.setupRemoteVideo(canvas) } } 

Налаштування якості відео

Agora надає передустановки AgoraVideoEncoderConfiguration та кастомні параметри:

let config = AgoraVideoEncoderConfiguration( size: CGSize(width: 640, height: 360), frameRate: .fps15, bitrate: AgoraVideoBitrateStandard, orientationMode: .adaptative, mirrorMode: .auto ) agoraKit.setVideoEncoderConfiguration(config) 

Для мобільного додатку 360p/15fps — розумний баланс якості та батарейного навантаження. 720p/30fps — для планшетів або коли якість критична. 1080p не підходить для мобільних: споживає багато енергії та ресурсів, а різниця у сприйнятті між 720p та 1080p незначна.

Порівняльна таблиця налаштувань відео
Роздільна здатність fps Бітрейт Навантаження на батарею
360p 15 Standard Низьке
720p 30 Standard Середнє
1080p 30 High Високе

Як обробити переривання та lifecycle?

На iOS AVAudioSession.routeChangeNotification та AVAudioSession.interruptionNotification — Agora SDK обробляє їх автоматично при коректному налаштуванні AgoraAudioScenario. Сценарій .meeting — оптимальний для відеодзвінків: включає AEC, ANS, AGC.

При вхідному системному дзвінку Agora не паузиться автоматично. Реалізуємо через CXCallObserver: при CXCall.hasConnected == true — muteLocalAudioStream(true), при завершенні — розмьютуємо. Для вхідних дзвінків також налаштовуємо push notifications, щоб миттєво сповіщати користувача.

На Android без ForegroundService Android 8+ уб'є процес через 5–10 хвилин. Запускаємо ForegroundService при початку дзвінка з повідомленням. android:foregroundServiceType="camera|microphone" в маніфесті обов'язковий з Android 14.

Що входить в інтеграцію

  • Аналіз вимог: кількість учасників, якість, бекенд-інтеграція, бюджет.
  • Налаштування токенів: генерація, кешування, обробка протухань.
  • Реалізація UI: відеоканваси, органи управління, віртуальний фон Agora.
  • Lifecycle: ForegroundService на Android, CXCallObserver на iOS.
  • Тестування: 10+ сценаріїв (обрив мережі, вхідний дзвінок, швидка перекомутація).
  • Документація: README, коментарі коду, схема токенів.
  • Підтримка: 2 тижні після релізу, фіксація багів.
  • Запис дзвінків Agora: за потреби налаштовуємо recording.

Терміни та вартість

Пропонуємо інтеграцію Agora SDK під ключ від $2000. Базова інтеграція (1-на-1 відеодзвінок з управлінням камерою, mute, flip) — 3–5 днів, вартість від $2000. З підтримкою групи до 8 учасників, токен-менеджментом та фоновим режимом — 1–2 тижні, вартість до $5000. Економія на ліцензіях Agora може сягати $1000 на місяць при середньому навантаженні. Вартість точного рішення розраховується після аналізу вимог. Напишіть нам для консультації — ми безкоштовно оцінимо ваш проект та підготуємо кошторис і roadmap.