1. Необходимо интегрировать фреймворк livekit в iOS приложение 2. Интегрировать с callkit 3. Сделать верстку по дизайну интерфейса
Техническое задание: Интеграция аудиозвонков через LiveKit и CallKit в iOS-приложение с поддержкой VoIP
Цель
Обеспечить полноценную поддержку аудиозвонков в iOS-приложении на базе LiveKit, с нативным отображением звонков через CallKit, и приёмом входящих звонков через VoIP Push (PushKit). Комната создаётся автоматически, без участия пользователя.
⸻
1. Интеграция LiveKit (аудио)
Задачи: • Подключить LiveKit iOS SDK. • Реализовать подключение к существующему серверу LiveKit: • Комната определяется автоматически сервером • Аутентификация происходит через access-токен, получаемый от backend-а • Поддерживаемые функции: • Подключение к комнате только с аудио-треком • Управление микрофоном (включение/отключение) • Завершение сессии (включая удаление из комнаты) • Обработка событий: • Подключение и отключение участников • Ошибки подключения и потери соединения
⸻
2. Интеграция CallKit
Задачи: • Настроить CallKit (CXProvider + CXCallController) для: • Отображения системного интерфейса звонков • Управления действиями: ответ, отклонить, завершить, микрофон • Сценарии: • Исходящий звонок: инициируется из приложения, отображается через CallKit, автоматически подключается к LiveKit • Входящий звонок: инициируется через VoIP push, отображается системный экран звонка, при ответе — подключение к LiveKit • Логика синхронизации: • Ответ в CallKit → подключение к комнате LiveKit • Завершение вызова → отключение от LiveKit и уведомление CallKit
⸻
3. VoIP Push-уведомления
Задачи: • Интеграция PushKit для приёма VoIP push-уведомлений • Получение и регистрация VoIP-токена • Обработка входящих push-сообщений: • На входящее уведомление — вызов CallKit (CXProvider.reportNewIncomingCall) • Подключение к комнате LiveKit после принятия вызова • Учет сценариев фонового режима и закрытого приложения
⸻
4. Поведение приложения
Исходящий вызов: 1. Пользователь нажимает “Позвонить” в приложении. 2. Вызов отображается через CallKit. 3. Подключение к комнате LiveKit происходит при старте звонка.
Входящий вызов: 1. Сервер отправляет VoIP push. 2. Приложение получает уведомление и вызывает CallKit. 3. При ответе — подключение к LiveKit и начало аудиосессии.
⸻
Ожидаемый результат • Поддержка исходящих и входящих аудиозвонков. • Стабильная работа через CallKit с отображением системных звонков. • Транспорт аудио — через LiveKit, с надёжным соединением. • Входящие вызовы через VoIP push (PushKit). • Минимальное участие пользователя — комната и соединение происходят автоматически.