Восстановление публикации с выбранной камеры в iOS Safari¶
В iOS по умолчанию запрещена фоновая публикация видео. Поэтому при сворачивании окна браузера iOS Safari в фон браузер отключает видеоэлемент, с которого транслируется камера, от камеры. Затем, при разворачивании окна браузера на передний план, в зависимости от версии iOS, браузер может либо не подключить камеру к видеоэлементу, либо подключить не ту камеру, которая была выбрана до того.
В этом случае нужно обработать событие visibilitychange
для документа и, если HTML страница стала видимой (то есть окно браузера развернулось на передний план), принудительно выбрать камеру
\1. Регистрация обработчика события visibilitychange
if (Browser.isiOS() && Browser.isSafariWebRTC()) {
document.addEventListener('visibilitychange', () => {
onVisibilityChanged();
});
}
\2. Выбор камеры при разворачивании окна браузера
function onVisibilityChanged() {
if (Browser.isiOS() && Browser.isSafariWebRTC() && document.hidden !== undefined) {
// iOS Safari may change camera when rising from the background, use chosen one explicitly
if (publishStream && !document.hidden) {
publishStream.switchCam($('#videoInput').val()).then(function(id) {
console.log("Switched explicitly to camera " + id);
$('#videoInput option:selected').prop('selected', false);
$("#videoInput option[value='"+ id +"']").prop('selected', true);
}).catch(function(e) {
console.log("Error " + e);
});
}
}
}
Данный метод работает с WebSDK 2.0.248 на iOS Safari 12.5.7 и выше.