Удаленная установка настроек в мобильный клиент VM SDK

При интеграции VM SDK в свои приложения часто возникает задача передавать настройки VM SDK в разрабатываемое приложение так, как это сделано на сервере VideoMost. Статья ниже именно об этом случае. Если приложение не использует сервер VideoMost, то можно также загрузить настройки с помощью профилей (см. статью "Загрузка настроек в мобильный клиент VM SDK с помощью профилей").

Для получения настроек сервера, необходимо в коде мобильного клиента сделать
GET-запрос по адресу http:///service/ext/settings_a с параметрами:
confid - id конференции, string
confpass - пароль конференции, string
lang – язык на котором будет возвращено сообщение о ошибке(ru|en) (опционально)
sid – session id для залогиненного участника. Возвращается вызовом Login XML-RPC поле sessionkey (опционально)
Пример выполнения запроса консольной утилитой wget:
wget -O- "http://go.videomost.com/service/ext/settings_a?confid=533931&confpass=0197&lang=ru"
Ответом на этот запрос будет json с параметрами:
cm – список параметров для СМ (как раз требуемые параметры)
global – параметры настройки сервера (только те, что могут пригодиться приложению)
confinfo – параметры конфернции
XMPPserver – адрес XMPP сервера
login – jid для клиента предлагаемый сервером
confjid – jid конференции
version –версия сервера
Из них нам нужен параметр "cm":
"cm":{
"view.name":"1",
"view.rating":"1",
"view.stat":"0",
"view.aspect":"16:9",
"video.maxparticipants":4,
"video.speaker-selector":"0",
"voice.bitrate":"10000",
"voice.framelength":"60",
"voice.ars.enabled":1,
"voice.ars.bitrate":"{7;34}",
"voice.fec":"none",
"voice.fec.request":"none",
"voice.rd.enabled":"1",
"voice.rd.auto":"1",
"voice.rd.mode":"fd",
"voice.rd.echopath":"0",
"voice.rd.nlp":"1",
"voice.rd.cng":"1",
"voice.rd.ns":"1",
"voice.rd.agc":"1",
"voice.encoder.cn":1,
"voice.encoder.ssvad":"1",
"video.size":"{640;360}",
"video.encoder.bitrate":270,
"video.framerate":12,
"video.encoder.keyperiod":"0",
"video.ars.enabled":"1",
"video.ars.bitrate":"{30;384}",
"video.ars.framerate":"{3;20}",
"video.autofec":"1",
"video.fec":"none",
"video.fec.request":"none",
"video.rtx-jb-delay":"1500",
"video.rtx-time":"3000",
"vnc.client.bitrate":"normal",
"vnc.client.scaling":100,
"log.level":"full",
"log.brtp":"0",
"transport.use_tls":"1",
"transport.tunnel.port":"80",
"transport.proxy.usetype":"use",
"transport.console.show":"0",
"transport.disable_detect_best_channel":1,
"transport.srtp.enabled":"0",
"transport.srtp.crypto":"",
"transport.tcprelay.servers":"videomost.com:444",
"transport.udprelay.servers":"videomost.com:7000",
"transport.stun.servers":"videomost.com",
"video.bitrate":"384",
"global.reduced_rtcp":1,
"global.sync_streams":1
}
Параметры могут быть другими и их может быть любое количество.
Применять параметры нужно до вызова Login().
Чтобы применить параметр, используйте метод SetOption, например:
CallManager.SetOption("video.bitrate", 0, "384");