Итак, это свершилось. Кроме iPhone 8, который устарел ровно через полчаса после анонса iPhone 10, Apple обновила свой десктопный и мобильный браузер Safari. Среди прочих улучшений — реализация WebRTC (ходят слухи, что частично позаимствованная у Chromium. «Plan B» на это тоже намекает). Что это значит для разработчиков? Можно звонить через браузер как на десктопе, так и на айфонах. Голосом и видео. Я уже писал про обновленные инструменты разработчика в браузере, а сейчас хочу поделиться, как это все работает в релизе. Мы уже обновили SDK Voximplant, проверили, как Safari звонит в Microsoft Edge, и вот что я хочу рассказать…
Видео само не заиграет
Apple внимательно изучила опыт других браузеров, прежде чем добавить поддержку в свой собственный. Вместе с поддержкой было добавлено множество ограничений, которые призваны защитить пользователей от нежелательных баннеров, рекламы и прочих нехороших вещей, которые так любят многие сайты. Одно из таких ограничений: элемент video, в который WebRTC обычно выводит видеопоток с локальной камеры и/или со второго конца звонка, не будет проигрывать видео, пока пользователь в явном виде это не разрешит.
Как выглядит «явное разрешение от пользователя»? Это должен быть интерактивный элемент, в обработчике 'onclick' которого нужно вызвать метод 'play' для объекта видео. Вызов этого метода из другого места кода или программное нажатие на кнопку не включат воспроизведение видео. Помнится, много лет назад программисты Blizzard так же боролись с ботоводами в World of Warcraft, делая «protected» API, вызывать которые можно было только в ответ на действия пользователя.
Safari поддерживает только h.264 видеокодек
Когда два устройства договариваются об установке подключения, они обмениваются (с вашей помощью) текстовыми SDP пакетами. Где, кроме всего прочего, указаны поддерживаемые кодеки. h.264 поддерживают последние версии Chrome, Firefox и Edge — но в более старых версиях ее может не быть. Более того, кроме браузеров видеозвонки могут приходить и от других SIP-совместимых устройств: телефонов, программ-клиентов, мобильных приложений. И если там нет поддержки h.264 — то видеосвязи не будет.
Мелочи, о которых стоит знать
Chrome и Safari для описания медиапотоков в SDP-пакете использует «Plan B». А Firefox — «Unified Plan». Поэтому если больше одного медиапотока (например, при нескольких видеопотоках разного качества) — то кому-то придется выступать в роли переводчика. А про Edge я промолчу.
Также Safari накладывает ряд ограничений на использование WebRTC: только HTTPS, iframe’ы только с того же домена, что и сайт. И если первое требование не вызывает никаких проблем, то требования к iframe’ам сильно ограничивает использование встраиваемых виджетов. С другой стороны, Apple тоже можно понять — именно с таких виджетов чаще всего идет навязчивая видеореклама.
Автор: eyeofhell