Резюме
Мы не можем получить доступ к камере из веб-приложения главного экрана iOS11 (общедоступная версия), используя WebRTC или ввод файла, подробности ниже. Как наши пользователи могут продолжать получать доступ к камере?
Мы обслуживаем страницу веб-приложения по https.
Обновление, апрель
Публичный выпуск iOS 11.3, похоже, устранил проблему, и доступ к камере для ввода файлов снова работает!Обновление, март
Как здесь говорят, документы Apple сообщают, что функция камеры веб-приложения возвращается в 11.3 вместе с работниками службы. Это хорошо, но мы еще не уверены, хотим ли мы, чтобы все переустановили снова, пока мы не сможем тщательно протестировать 11.3GM.
Решение, ноябрь
Мы потеряли надежду, что Apple хочет это исправить, и двинулись вперед. Изменили наше веб-приложение, чтобы удалить функцию iOS «Добавить на главный экран», и попросили затронутых пользователей удалить любой предыдущий значок главного экрана.Обновление, 6 декабря
iOS 11.2 и iOS 11.1.2 не исправляют.
Обходные пути, 21 сентября
Кажется, мы могли бы спросить существующих клиентов веб-приложения
- не обновляйтесь до iOS11 - удачи в этом :)
- делать фотографии на камеру iOS, а затем снова выбирать их в веб-приложении
- ждать следующей бета-версии iOS
- переустановите как страницу Safari в браузере (после удаления логики ATHS)
- переключиться на Android
Ввод файла
В нашем текущем производственном коде используется ввод файла, который годами отлично работал с iOS 10 и старше. В iOS11 он работает как вкладка Safari, но не из приложения на главном экране. В последнем случае камера открыта и отображается только черный экран, следовательно, ее нельзя использовать.
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
WebRTC
Safari 11 на iOS11 предлагает захват мультимедиа WebRTC, и это здорово.
Мы можем захватить изображение с камеры на холст на обычной веб-странице на настольном компьютере и мобильном устройстве, используя navigator.mediaDevices.getUserMedia в соответствии с примером кода, приведенным здесь .
Когда мы добавляем страницу на домашний экран iPad или iPhone, она navigator.mediaDevices
становится undefined
непригодной для использования.
<meta name="apple-mobile-web-app-capable" content="yes">
...
// for some reason safari on mac can debug ios safari page but not ios home screen web apps
var d = 'typeof navigator : ' + typeof navigator; //object
d += 'typeof navigator.mediaDevices : ' + typeof navigator.mediaDevices; // undefined
// try alternates
d += 'typeof navigator.getUserMedia : ' + typeof navigator.getUserMedia; // undefined
d += 'typeof navigator.webkitGetUserMedia : ' + typeof navigator.webkitGetUserMedia; // undefined
status1.innerHTML = d;