Розробка відеодзвінків у мобільному додатку

Ми розробляємо відеодзвінки в мобільних додатках. Це не просто WebRTC-з'єднання: управління камерою та мікрофоном, lifecycle на рівні системи, обробка переривань (вхідний дзвінок, сповіщення, блокування екрану), коректна робота у фоні та на низькому рівні заряду батареї. Кожна з цих деталей — окрема

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка відеодзвінків у мобільному додатку
Складний
від 1 тижня до 3 місяців

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

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

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

  • 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

Ми розробляємо відеодзвінки в мобільних додатках. Це не просто WebRTC-з'єднання: управління камерою та мікрофоном, lifecycle на рівні системи, обробка переривань (вхідний дзвінок, сповіщення, блокування екрану), коректна робота у фоні та на низькому рівні заряду батареї. Кожна з цих деталей — окрема задача з нетривіальними рішеннями на iOS та Android. Наш досвід у цій галузі перевищує 7 років, ми реалізували понад 30 проєктів з відеодзвінками для клієнтів з різних індустрій. Вартість розробки базового відеодзвінка стартує від $7,000, а повноцінне рішення з CallKit/ConnectionService та кастомним сигналінгом — від $15,000.

Який транспорт обрати для розробки відеодзвінків: WebRTC чи готовий SDK?

Чистий WebRTC — це RTCPeerConnection, RTCSessionDescription, ICE/STUN/TURN сервери, getUserMedia, сигналінг через WebSocket. Повна реалізація з нуля займає 3–6 тижнів тільки на транспортний шар, без UI. Це дозволяє зменшити розмір бінарника на 30% порівняно з використанням Agora SDK.

Більшість проєктів обирають SDK поверх WebRTC: Twilio Video, Daily.co, 100ms, Livekit або Agora. Вони беруть на себе ICE negotiation, codec negotiation (VP8/VP9/H.264/AV1), адаптивний бітрейт, і дають готові нативні обгортки для iOS та Android.

Якщо вимоги до кастомізації невисокі та важлива швидкість запуску — обираємо SDK. Якщо потрібен повний контроль над кодеком, шифруванням або мінімальною вагою бінарника — чистий WebRTC через GoogleWebRTC (iOS) або org.webrtc (Android).

Порівняння WebRTC та SDK
Критерій WebRTC SDK (Twilio/Agora)
Час розробки 3–6 тижнів 1–2 тижні
Контроль Повний Обмежений
Вага бінарника Мінімальна Більше на 5–10 МБ
Підтримка кодеків Будь-які Обмежена SDK

Крок 1: Як реалізувати відеодзвінок на iOS?

Відео з камери захоплюється через AVCaptureSession. Правильна ініціалізація:

let session = AVCaptureSession() session.sessionPreset = .hd1280x720 let camera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front) let input = try AVCaptureDeviceInput(device: camera!) let output = AVCaptureVideoDataOutput() output.setSampleBufferDelegate(self, queue: DispatchQueue(label: "videoQueue")) 

AVCaptureVideoDataOutput з делегатом дає сирі CMSampleBuffer — їх передаємо в WebRTC через RTCVideoSource. Важно: AVCaptureSession.startRunning() викликається строго у фоновому потоці, не на головному — інакше UI заморозиться на 200–400 мс.

Перемикання фронтальної/основної камери — AVCaptureSession.beginConfiguration() + видалення старого input + додавання нового + commitConfiguration(). Без begin/commit навколо цих операцій — флікер на відео під час перемикання.

CallKit — обов'язковий компонент для iOS-додатків з відеодзвінками. Без нього вхідний дзвінок відображається як push-сповіщення, яке може бути пропущено. З CallKit — повноекранний системний екран дзвінка, інтеграція з Bluetooth/AirPods, правильна обробка переривання аудіо. Реалізуємо через CXProvider та CXCallController. VoIP push через PKPushRegistry — єдиний спосіб розбудити додаток для вхідного дзвінка.

Крок 2: Як реалізувати відеодзвінок на Android?

На Android Camera2 API (CameraManager.openCamera()) дає доступ до ImageReader з форматом YUV_420_888 — стандартний формат для WebRTC на Android. Для більшості задач вистачає рівня CameraDevice.StateCallback + CaptureRequest.Builder.

ConnectionService — Android-аналог CallKit. Реєструємо PhoneAccount, через TelecomManager керуємо станом дзвінка. Без цього на Android 10+ додаток не може працювати у foreground під час дзвінка без постійного сповіщення.

Для збереження з'єднання при згортанні — ForegroundService з типом mediaProjection або phoneCall. На Android 14 це вимагає явного вказання в маніфесті: android:foregroundServiceType="camera|microphone".

Крок 3: Управління камерою та мікрофоном

Mute мікрофона — не відключення пристрою, а заміна аудіо-треку на тишу. В WebRTC: RTCAudioTrack.isEnabled = false. Повне відключення мікрофона на рівні AVAudioSession — ламає ехоподавлення.

Flip камери під час дзвінка — через RTCCameraVideoCapturer.stopCapture() + зміна пристрою + startCapture(with:fps:). Без повної зупинки — крэш на деяких пристроях Huawei та Xiaomi через стан гонки в Camera2.

Поворот екрану — RTCVideoTrack сам по собі не враховує орієнтацію. Потрібно передавати RTCVideoRotation в RTCVideoFrame при захопленні з камери, інакше співрозмовник побачить повернуте на 90° відео на пристроях з portrait-lock.

Крок 4: Якість з'єднання та адаптація

Адаптивний бітрейт — базова функція WebRTC (алгоритм GCC). Але потрібно явно задати діапазон: RTCRtpEncodingParameters з minBitrateBps: 100_000 та maxBitrateBps: 1_500_000. Без обмеження зверху на Wi-Fi WebRTC спробує використовувати 4–8 Мбіт/с — це некомфортно для інших користувачів мережі.

Індикатор якості з'єднання через RTCPeerConnection.getStats() — парсимо RTCInboundRtpStreamStats для framesPerSecond та packetsLost. Втрати > 5% — показуємо попередження користувачу. Ці механізми забезпечують стабільність зв'язку навіть при нестабільному інтернеті.

Що входить в роботу з розробки відеодзвінків?

  • Аудит вимог та вибір оптимального транспорту (WebRTC або SDK)
  • Розробка сигналінгу (WebSocket або сторонній сервер)
  • Інтеграція камери та мікрофона з AVCaptureSession/Camera2
  • Підключення CallKit/ConnectionService для системних дзвінків
  • Розробка UI: прев'ю локального відео, віддалене відео, кнопки керування
  • Адаптивний бітрейт та контроль якості з'єднання
  • Тестування на реальних пристроях (iOS/Android)
  • Документація з інтеграції та передача вихідного коду
  • Підтримка після релізу (2 тижні)

Процес: від ідеї до релізу

Крок 1: Аудит вимог → Крок 2: Вибір транспорту → Крок 3: Реалізація сигналінгу → Крок 4: Інтеграція камери/мікрофона → Крок 5: CallKit/ConnectionService → Крок 6: UI та кнопки керування → Крок 7: Тестування на реальних пристроях → Крок 8: Деплой у магазини.

Оцінимо ваш проєкт безкоштовно. Напишіть нам, і ми запропонуємо оптимальне рішення з урахуванням ваших термінів та бюджету. Базовий відеодзвінок 1-на-1 через SDK (Twilio/Agora/100ms) з управлінням камерою, mute та flip — 1–2 тижні. Чистий WebRTC з сигналінгом, CallKit, фоновий режим — 3–5 тижнів. Вартість розраховується після аналізу вимог.