Якщо ви хочете створити соціальний/знайомчий додаток 1 на 1, найскладнішим завданням буде не “можливість відеодзвінків”, а те, як Матч → Дзвінок → З'єднання → Фоновий режим → Неперервний зв'язок при слабкому інтернеті → Конфіденційність і безпека → Інтерактивні подарунки Цей маршрут працює без перебоїв.

Застосування: знайомства 1 на 1/спілкування, матчінгові соціальні відео, відео з незнайомцями, приватні дзвінки.
Ви отримаєте: пріоритетність функцій MVP, кінцевий процес, стратегію повторного підключення/збереження активності, модуль захисту конфіденційності та чек-лист для запуску.

Як реалізувати відеодзвінок 1 на 1 у соціальних додатках? Повний процес: встановлення з'єднання, робота у фоновому режимі, відновлення з'єднання після розриву - LikaCloud.

Сцена та ціль

Ціль продукту: Низька затримка, стабільне підключення, надійні дзвінки, контроль над конфіденційністю, масштабована монетизація (подарунки/тарифікація).
Гіпотеза про масштаб (типове значення):

  • Кількість одночасних користувачів: 10 000 (просто онлайн, не означає, що вони розмовляють один з одним).
  • Одночасні дзвінки: 1000 пар (=2000 людей у режимі реального часу з аудіо та відео).
  • Ціль щодо затримки від кінця до кінця: < 300 мс, щоб забезпечити більш “особистий” досвід (типовий показник у цій галузі).

Список функцій (МВП → розширена версія)

МВП необхідно зробити (спочатку запустити).

  • Список матчів/рекомендацій (концепція матч-холу/соціального залу)
  • Дзвінок 1 на 1: вихідний дзвінок, дзвінок із викликом, відповідь на дзвінок, відмова приймати дзвінок, зайнята лінія, перевищення часу очікування.
  • Контроль під час дзвінка: увімкнення/вимкнення камери/мікрофона, перемикання між передньою та задньою камерами, перемикання між гучномовцем і телефонною трубкою.
  • Автоматичне відновлення з'єднання після розриву.(Поганий інтернет/перемикання мережі)
  • Найбазовіша конфіденційність: додавання до чорного списку, подання скарги, сповіщення про основні дозволи.

Покращення на вищому рівні (підвищення показників утримання користувачів та середньої дохідності на одного користувача (ARPU))

  • Текстовий чат + прочитано/не прочитано + статус онлайн (можливість відповідати на повідомлення)
  • Вікно дзвінка, офлайн-повідомлення (щоб дзвінки краще “доходили”)
  • Краса/віртуальний фон/фільтри (для підвищення конверсії)
  • Шум-редукція ШІ (більш чіткий звук у шумному середовищі)
  • Історія дзвінків/повідомлень (тарифікація/управління ризиками/якість послуг)
  • Інтерактивні подарунки (подарування) та система оплати (за тривалість/за сеанс).

Розбирання архітектури.

Для відеодзвінків 1 на 1 рекомендується розділити їх на 4 частини, кожна з яких виконуватиме свою функцію:

  1. Задня частина бізнесу (кімнати та відносини)
  • Профіль користувача, матчі/рекомендації, чорний список.
  • Замовлення/тарифікація (якщо це платний дзвінок)
  • Замовлення подарунків та розрахунок (якщо надається винагорода)
  1. Система сигналів (узгодження виклику та стану)
  • Виклик, запрошення відповісти, відмова, скасування, перевищення часових обмежень.
  • Визначення зайнятості лінії та захист від одночасних дзвінків (один користувач може бути у одному дзвінку одночасно).
  • Синхронізація стану дзвінка: Дзвонить / Підключається / Підключено / Перепідключається / Завершено
  1. Медіа-посилання RTC (аудіо та відео контент)
  • Приєднатися до кімнати, публікувати/підписуватися на аудіо та відео.
  • Кодування/декодування, адаптивна швидкість передачі даних, стратегія для слабкого інтернет-з'єднання.
  • Обробка аудіо: усунення ехо/зменшення шуму/автоматичне збільшення гучності (аналогічно можливостям шумозаглушення ШІ).
  1. Ризик-менеджмент/Комплаєнс (безпека та управління)
  • Токен автентифікації, антиспам (запобігання масовим дзвінкам/небажаним повідомленням від роботів).
  • Шифрування від країни до країни/налаштування конфіденційності/видалення даних (критерії відповідності та конфіденційності)
  • Повідомлення про порушення, блокування, процес перевірки (спочатку вручну теж можна).

Ключові процеси (переадресація дзвінка, фоновий режим, відновлення з'єднання після розриву).

1 Весь процес встановлення з'єднання (частина, де найчастіше виникають помилки)

Процес:
Вибір учасника у лобі → Запрошення на дзвінок → Дзвінок на інший телефон → Прийняття дзвінка → Вхід до однієї кімнати → Публікація/підписка на аудіо та відео → Керування під час дзвінка → Завершення дзвінка

Основні моменти реалізації:

  • Надсилання виклику занадто пізно.Наприклад, якщо дзвінок не відповідають протягом 30 секунд, він автоматично скасовується (щоб уникнути постійного зайняття лінії).
  • Зайнятий/недоступнийЯкщо співрозмовник зайнятий, просто поверніться назад до режиму "Зайнято".
  • Скасувати дзвінок.Якщо абонент скасовує дзвінок, перш ніж його одержувач відповість, він повинен повідомити одержувачу, щоб той припинив дзвінок.
  • Машина стану повинна орієнтуватися на сервер.Коли у клієнта слабкий інтернет, легко виникає ситуація, коли “стани обох сторін не збігаються”.”

2 Система має бути здатна приймати дзвінки як з переднього, так і з заднього офісу.“

Найчастіші негативні відгуки про дзвінки один на один:“Якщо ви закриєте додаток, зв'язок переривається”, “немає сповіщення при блокуванні екрану”, “коли я повертаюся на головний екран, все стає чорно-білим”.”

Рекомендується зробити це в два етапи:

  • Сповіщення на рівні системиОфлайн-повідомлення/нагадування про дзвінки (в офіційній документації також наголошується, що “ви можете отримувати нагадування про дзвінки та повідомлення, коли немає з'єднання з Інтернетом”).
  • Досвід у межах додаткаВікно дзвінка у режимі спливаючого вікна дозволяє користувачеві вийти з дзвінка і повернутися до нього в будь-який момент.

Мінімальна реалізація:

  • Додаток переходить у фоновий режим: підтримує сигнальний зв'язок, забезпечує збереження медіаконтенту відповідно до політики або швидке відновлення.
  • Повернення на головну сторінку: відновлення перегляду камери, синхронізація стану дзвінка (підключено / повторне підключення)

3 Перепідключення після розриву зв'язку (ключовий момент для запобігання розриву зв'язку при слабкому інтернеті)

Ціль не полягає в тому, щоб “ніколи не падати”.”Але: навіть якщо з'єднання обривається, воно автоматично відновлюється протягом 3–10 секунд, і користувач знає, що сталося.

Рекомендований процес повторного підключення:

  1. Моніторинг змін у мережі/розрив зв'язку з медіа → Інтерфейс користувача відображає повідомлення “Поганий зв'язок, повторне підключення...”.”
  2. Спочатку перез'єднайте сигнальний зв'язок (переконайтеся, що статус дзвінка все ще активний).
  3. Знову підключіть медіа (знову приєднайте/знову опублікуйте).
  4. Успішне повторне підключення → Відновлення інтерфейсу користувача для підписки та дзвінків.
  5. Якщо перевищено поріг, але запит все ще не вдається → автоматичне роз'єднання та надання підказок (для запобігання “псевдоактивності”).

Показники спроможності роботи в умовах слабкого інтернет-з'єднання.
Тенцент RTC 1v1 Дейтинг: “Кінцево-кінцевий час відгуку <300 мс, захист від втрати пакетів 801 ТП4Т, захист від флікера 1000 мс, високоякісна комунікація навіть при слабкому інтернет-з'єднанні” тощо. Ви можете розглядати це як “критерії, на які необхідно звернути увагу при виборі рішення”.

Список труднощів і підводних каменів.

Слабкий інтернет (втрата пакетів/тремтіння/перехід з Wi-Fi на 4G)

  • Явище: тремтіння голосу, заїкання, розмиті кадри, раптове переривання.
  • Обробка: адаптивна швидкість передачі даних, пріоритет аудіо, повторне підключення, виявлення зміни мережі.
  • Рівень продукту: відображає повідомлення про “якість мережі” (червоний, жовтий, зелений).

Ехо/крик (перемикання між зовнішнім виводом та навушниками)

  • Явище: співрозмовник чує власний голос і пронизливий свист.
  • Опрацювання: усунення ехо в AEC + стратегія виведення звуку + правильне перемикання аудіомаршрутизації.
  • Користувацький рівень: підказка “Рекомендується надягти навушники/вимкнути гучномовці”.”

Передній і задній план/блокування екрану/перервані дзвінки.

  • Явище: вихід із додатку, чорний екран після повернення на головний екран, некоректна робота режиму дзвінка після отримання виклику.
  • Обробка: машина стану дзвінка, відновлення камери, офлайн-передача/плаваюче вікно (функціональні можливості)

Співставність стану (найбільш прихована)

  • Явище: одна сторона показує, що дзвінок прийнятий, а інша сторона все ще дзвонить; після того, як дзвінок завершено, інша сторона все ще показує, що дзвінок триває.
  • Обробка: авторитетний стан сервера + періодична перевірка клієнтом + відключення у разі перевищення часового ліміту.

6 Індикатори та тести

Я рекомендую вам стежити принаймні за цими 3-ма:

  1. Затримка від кінця до кінця (E2E latency)Ціль: <300 мс — більш комфортно.
  2. Відсоток успішних дзвінків / час, необхідний для з'єднання.Розподіл часу від запрошення до підключення (P50/P95)
  3. Вірогідність успішного повторного підключення / час, необхідний для повторного підключення.Відсоток успішних повторних підключень, середня кількість секунд, витрачених на повторне підключення.

Метод тестування слабкої мережі на реальному пристрої (простий, але ефективний):

  • Збільшити втрати пакетів та коливання за допомогою мережевого емулятора/інструменту для поганого інтернет-з'єднання.
  • Здійснити повний дзвінок у чотирьох сценаріях: перемикання між Wi-Fi та 4G, заблокований екран, робота у фоновому режимі та переривання дзвінка.
  • Запис: чи можна автоматично відновити, скільки часу займає відновлення, чи виникають порушення стану.

7 Вартість та вибір моделі.

Як оцінити витрати (достатньо навіть найпростішої формули):

  • Кількість хвилин дзвінків на місяць = кількість хвилин дзвінків на день × 30
  • Основні витрати зазвичай пов'язані з: хвилинами аудіо та відео, піковими значеннями одночасних підключень, записом/перекодуванням (якщо воно увімкнене) та потребою у глобальних лініях зв'язку.
    Водночас представники влади наголошують на важливості надання UI-кітів/SDK для різних платформ, щоб скоротити час виходу на ринок, що фактично є ключовим фактором “витрат на персонал”.

Власна реалізація WebRTC проти використання SDK:

  • Самостійне створення: високий рівень свободи, але потребує медіасервера, глобальних вузлів, а також витрат на поганий інтернет і забезпечення сумісності.
  • SDK: швидкий запуск, особливо зручно використовувати рішення з UIKit, крос-платформенні та оптимізовані для слабкого інтернет-з'єднання функції.

8 підсумки

Ключовим моментом у створенні додатка для відеодзвінків 1 на 1 є те, щоб Зал матчів → Машина стану виклику → Медіа-з'єднання → Фон і перез'єднання → Конфіденційність і безпека, а також монетизація. Сформувати стабільний ланцюжок.

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

Запитання 1: Який затримка відеодзвінка у форматі 1 на 1 вважається нормальною?

Як правило, чим ближче до <300 мс, тим природніша взаємодія; справжній ключ — у розподілі ваших користувачів, міжнародній частці та частці слабких мереж. При виборі рішення звертайте особливу увагу на глобальні вузли та можливості управління каналами зв'язку.

ПИТАННЯ 2: Чому дзвінки один на один часто закінчуються невдалим з'єднанням?

Частою причиною є недостатньо ретельна робота сигнальної машини: невидалений таймаут, повторні запрошення, непослідовне визначення стану "Зайнято". Рекомендується, щоб сервер забезпечував авторитетний стан та імперативну обробку.

Питання 3: що робити, якщо з'єднання розривається, коли ви переходите на задній план?

Необхідно одночасно обробити “системні сповіщення/пуші” та “відновлення медіаконтенту”. На сторінці рішення згадується, що плаваючі вікна та офлайн-пуші є типовими удосконаленнями, які значно покращують “прийом” і “відновлення” медіаконтенту.

ПИТАННЯ 4: Як забезпечити безперервний зв'язок при слабкому інтернет-з'єднанні?

Суть полягає в наступному: адаптивна швидкість передачі даних + автоматичне відновлення з'єднання + обробка перемикання мережі + підказки користувачевого інтерфейсу. При виборі рішення слід звернути увагу на такі показники, як стійкість до втрати пакетів і стійкість до флікера.

Запитання 5: Навіщо проводити текстовий чат у форматі 1 на 1, коли йдеться про знайомство?

Текстовий чат може сприяти конверсії “після матчу без дзвінка”, а також підвищувати ефективність взаємодії завдяки статусу прочитаних/непрочитаних повідомлень і онлайн-статусу. Крім того, на сторінці рішення текстовий чат визначено як один із ключових сценаріїв використання.

ПИТАННЯ 6: Як забезпечити конфіденційність і безпеку під час дзвінків один на один?

Необхідно, принаймні, мати кінцево-точкове шифрування, налаштування конфіденційності, можливість видалення даних і стратегію відповідності вимогам; на сторінці рішення наголошуються такі можливості, як кінцево-точкове шифрування і захист конфіденційності, а також сертифікація відповідності вимогам.

Відповідні посилання.

Якщо ви хочете якнайшвидше перекласти Зал для матчів + голосовий/відео/текстовий чат + шумопониження за допомогою ШІ + плаваюче вікно/автоматичне сповіщення у режимі офлайн. Ці основні посилання для знайомств 1 на 1 працюють, і ви можете перейти до них безпосередньо. Офіційне рішення Tencent RTC для онлайн-знайомств 1 на 1Почнемо з інтегрованого входу.