Поддерживает ли webKit в iOS 11 (бета) поддержку WebRTC?

У меня есть URL-адрес, который отлично работает с Safari на iOS11 (бета-версия). Аудио/видео работает нормально. Но когда я загружаю этот URL с WKWebView, он дает мне ошибку "Несовместимый браузер", и когда я проверяю версию своего браузера в WebKit, он показывает "браузер на основе WebKit на iOS 11"

Итак, на самом деле вопрос заключается в том, что Apple включила это изменение в WebKit WKWebview (который должен быть таким же, как Safari) для разработчика BETA iOS 11?

Ответ 1

Поскольку iOS11,

WebRTC частично поддерживается в WKWebView,
и полностью поддерживается в браузере Safari App.


Разъяснение:

WebRTC имеет три основных API JavaScript:

  • MediaStream (aka getUserMedia)
  • RTCPeerConnection
  • RTCDataChannel

Для приложений, работающих внутри приложения Safari, iOS11+, поддерживаются все API WebRTC. Это включает getUserMedia. Обязательно используйте библиотеку adapter.js для лучшей совместимости, поскольку каждый браузер, включая Safari, использует другое имя для его реализации. Например, в Safari это navigator.mediaDevices.getUserMedia().

Но при использовании WKWebView или SFSafariViewController это другая история:

Вы все равно можете передавать видео и аудио из локального хранилища или использовать живые медиа, захваченные одноранговым узлом. Надеюсь, в iOS 12 мы увидим некоторый прогресс...

Ответ 2

Я вчера немного поработал в источниках WebKit, и похоже, что все материалы WebRTC/MediaCapture защищены от предпочтений, которые доступны только через частный API. Был также коммит, который упомянул что-то о приложениях, которые должны обрабатывать все настройки для разрешений A/V.

В любом случае результат заключается в том, что getUserMedia не работает в WKWebView, даже на iOS11 (по крайней мере, бета-версия 4): (

Я подал радар (rdar://33571214 и http://www.openradar.me/33571214) и призываю всех остальных сделать то же самое.

Ответ 3

Я провел несколько тестов с iOS Beta 4, и кажется, что даже WKWebview или UIWebview не поддерживают getUserMedia в качестве API WebRTC.

Может кто-нибудь подтвердить это?