Резюме
Мы не можем получить доступ к камере из веб-приложения домашнего экрана 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;