# Схема работы Mobile SDK

TrueConf Server реализован в виде класса, предоставляющего доступ к основным функциям, и механизмам подписки на события. Основной функционал для iOS и Android унифицирован, тем не менее есть некоторые различия. Подробнее об этом вы узнаете далее.

Общий алгоритм работы:

  1. Имеются сервер видеосвязи и клиентское приложение (терминал).

  2. Для проведения сеанса видеосвязи к терминалу должен быть привязан пользователь, от имени которого производятся все операции. Доступно использование гостевых подключений.

  3. Сеанс связи между двумя точками (терминалами) проводится по запросу одного из участников.

  4. Для конференций с несколькими участниками на сервере создается отдельный объект-конференция с собственным идентификатором и временем жизни (текущая версия SDK не поддерживает эту функциональность, возможно лишь подключение к уже созданной групповой конференции). Терминал должен позвонить в такую конференцию сам или быть добавлен в список участников до её начала.

# Соединение с сервером

Терминал, при наличии сетевого соединения на устройстве, пытается соединиться с сервером видеосвязи. После установки соединения оно продолжает оставаться активным в течении всего времени работы системы. При обрыве происходит автоматическая попытка восстановить связь. Если в течении установленного переподключение не удаётся, то происходит информирование приложения и попытки установить связь продолжаются с меньшей интенсивностью.

# Авторизация

Терминал должен быть авторизован на сервере с помощью уникального идентификатора пользователя (TrueConf ID) и пароля. Если на стороне TrueConf Server имеются гостевые лицензии, то будет доступна генерация временных пользователей с одноразовыми паролями (гостей).

Одним идентификатором можно быть авторизованным только на одном терминале, то есть для SDK в отличие от обычных клиентских приложений Труконф не поддержана множественная авторизация. При логине на другом терминале, терминал, авторизованный ранее, будет автоматически отключен.

Пользователь считается авторизованным на конкретном терминале и доступным для вызова до тех пор, пока его терминал сохраняет соединение с сервером. При обрыве связи терминал пробует автоматически восстановить соединение, и, если это не удается в течение заданного времени, он считается отключенным. В зависимости от настроек терминала (включена опция автологина) при перезапуске клиента или восстановлении связи он может пытаться авторизоваться последним использованным идентификатором.

Помимо TrueConf ID (логина) используется отображаемое имя, которое используется для показа на элементах интерфейса. В некоторых случаях может отсутствовать, тогда вместо него используется TrueConf ID.

# Конференция

Сеанс начинается по инициативе одного из пользователей. Для этого его приложение должно быть подключено к серверу, а пользователь на нём авторизован (см. общий алгоритм работы). При выполнении звонка терминал переходит в режим ожидания, который завершится либо началом конференции, либо уведомлением о невозможности её начать.

На первой стадии сервер проверяет что вызываемый абонент существует и находится в состоянии "онлайн". После этого на сторону вызываемого отправляется запрос. Он может быть принят или отвергнут. Если в течении определённого времени нет реакции, запрос автоматически считается отвергнутым. Если получен положительный ответ, вызывающая сторона информируется об этом, и через сервер устанавливается соединение двух участников. В случае, когда оба участника конференции с точки зрения топологии сети находятся в прямой видимости, возможно установление прямого соединения минуя сервер.

Сеанс может быть завершен либо по команде одной из сторон, либо при невозможности восстановить оборванное соединение в течении заданного времени.

Пользовательский интерфейс виджета конференции встроен в SDK и не может быть изменен кроме брендирования элементов интерфейса и ручного формирования раскладки. Вне конференции интерфейс и поведение определяется использующей его программой.

# Передача видео и аудио

При соединении в сеанс, качество и задержка передаваемых видео и аудио данных определяется состоянием канала и производительностью терминалов. Так работает технология SVC, используемая в системе видеосвязи Труконф. Оно подстраивается в зависимости при изменении состоянии канала и меняется динамически в течении сеанса связи. Существуют глобальные ограничения максимального потока в зависимости от типа используемого сетевого соединения (3G, Wi-Fi, проводное) и ограничения максимального потока, задаваемые на стороне сервера. При их наличии, выбирается вариант с минимальным битрейтом. Задача ограничения битрейта на стороне терминала в текущей версии SDK не поддерживается.

В процессе сеанса возможно переключение между видеокамерами и динамиками/гарнитурами. При падении качества канала ниже предельного значения, возможно принудительное отключение отправки и получения видео, с приоритезацией аудио потока.

# Дополнительные сервисные функции

Сервер видеосвязи отслеживает статус авторизованных пользователей и может автоматически уведомлять о его изменении другие терминалы (используется событие onUserStatusUpdate). Информирование о статусе осуществляется на основании подписки. Её можно сделать на сервере, через редактирование адресных книг пользователей, и на терминале, путем разового запроса статуса нужного пользователя (в пределах одного сеанса авторизации).

# Состояния работы приложения с SDK

Операции, приводящие к изменению режима терминала, могут выполняться длительное время и в любой момент могут быть прерваны (например, при пропадании сетевого соединения). Потому SDK оперирует однозначно определёнными состояниями терминала и переходами между ними. Основными операциями являются команды изменения состояния и события, сообщающие о его фактическом изменении или произошедшей ошибке. Изменение состояний представлено на рисунке ниже:

/docs/mobile-sdk/media/states/ru.png

# Статусы пользователей

Состояние других абонентов, получаемые при подписке на изменение статусов, несколько отличаются от состояний терминала. Таблица соответствий приведена ниже.

Состояние терминала Статус пользователя Примечания
Undefined Технический статус, означает, что информация о статусе ещё не получена
Unknown Абонент с таким TrueConf ID не существует или для него не может быть получен статус
Disconnected Offline
Connected Offline
Logined Online Абонент зарегистрирован в сети и может принимать входящие звонки
In conference Busy Абонент находится в конференции и может принимать специальные запросы, но звонок типа точка-точка ему невозможен

# Гостевые пользователи

Вы можете подключаться к публичным конференциям (вебинарам) в качестве гостя. Для этого нужно сгенерировать гостевые логин и пароль по следующей инструкции:

LOGIN*guest2*EXTID*DISPLAYNAME

Где:

  • EXTIDExternal ID (любой текст)

  • DISPLAYNAME — отображаемое имя для гостя. Может быть пустым. Должен быть в UTF8.

PASSWORD$2RAND*TIMESTAMP*SIGN

Где:

  • RAND — любая строка без символа *

  • TIMESTAMP — время истечения срока действия пароля в UTC (GMT) в секундах от 1 января 1970 (integer)

  • SIGN = md5(RAND + EXTID + TIMESTAMP + SECRET), где SECRET — параметр Ключ для авторизации гостевых подключений вашего сервера из раздела Настройки:

/docs/mobile-sdk/media/server_settings/ru.png

Если логин начинается с guest2, система ожидает пароль в специальном формате. Если пароль корректный и TIMESTAMP не старше времени сервера, тогда после подключения к конференции гость будет иметь Сall ID #guest2:EXTID@server.name.

Возможность подключения к публичным конференциям в качестве гостя и общее число таких доступных подключений зависит от лицензии на ваш TrueConf Server.

Обновлено: 19.01.2025