Как получить доступ к камере на iOS11 home screen web app?


резюме

мы не можем получить доступ к камере из веб-приложения на главном экране iOS11 (public release) с помощью WebRTC или входного файла, подробности ниже. Как наши пользователи могут продолжать получать доступ к камере, пожалуйста?

мы обслуживаем страницу веб-приложения через https.

Обновление, Апрель

Публичный выпуск iOS 11.3, похоже, исправил проблему, и доступ к камере ввода файлов снова работает!

обновление, Марш

как люди здесь сказали, что Apple docs советуют веб-приложение функция камеры возвращается в 11.3 вместе с работниками службы. Это хорошо, но мы еще не уверены, хотим ли мы, чтобы все переустановили снова, пока мы не сможем тщательно протестировать 11.3 GM.

Решение

Мы потеряли надежду, что Apple хочет исправить это и двинулись вперед. Изменено наше веб-приложение, чтобы удалить функцию iOS "добавить на главный экран" и спросил пострадавших пользователи, чтобы удалить любой предыдущий значок на главном экране.

Обновление, 6 Декабря

iOS 11.2 и iOS 11.1.2 не исправить.

Обходные Пути, 21 Сентябрь!--5-->

кажется, мы могли бы задать существующих клиентов веб-приложения

  • не обновить до iOS11-удачи с этим :)
  • возьмите фотографии в iOS камеры, а затем выберите их обратно в веб-приложение
  • дождитесь следующей бета-версии ios
  • как переустановить сафари в браузере страницу (после того, как мы удалить судов логики)
  • переключиться на Android

Входной Файл

наш текущий код использует входной файл, который нормально работал в течение многих лет с iOS 10 и старше. На iOS11 он работает как вкладка Safari, но не из приложения на главном экране. В последнем случае камера открывается и отображается только черный экран, следовательно, это непригодный.

   <meta name="apple-mobile-web-app-capable" content="yes">
   ...
   <input type="file" accept="image/*">

WebRTC

Safari 11 на iOS11 предлагает WebRTC media capture это здорово.

мы можем захватить изображение камеры на холст на обычной веб-странице на рабочем столе и мобильном телефоне с помощью навигатора.средневековье.getUserMedia per пример кода, связанный здесь.

когда мы добавляем страницу на главный экран 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;
4 88

4 ответа:

У нас очень похожая проблема. До сих пор единственным обходным путем, который мы смогли сделать, является удаление мета-тега для того, чтобы он был "apple-mobile-web-app-capable" и позволял пользователям открывать его в Safari, где все, кажется, работает нормально.

обновление: в то время как некоторые ранее опубликованные изменения и публикации заставили меня поверить, что веб-приложения используют manifest.json вместо apple-mobile-web-app-capable наконец-то будет иметь доступ к правильной реализации WebRTC, к сожалению, это не так, как указывали другие здесь, и тестирование подтвердило. Грустное лицо. Извините за неудобства, вызванные этим, и давайте надеяться, что один счастливый день в галактике далеко, далеко Apple, наконец, даст нам доступ к камере в режиме просмотра (не Safari) движок WebKit...

Да, как уже упоминалось, getUserMedia доступен только непосредственно в Safari, но ни в UIWebView, ни в WKWebView, поэтому, к сожалению, Ваш единственный выбор

  • удаление <meta name="apple-mobile-web-app-capable" content="yes"> таким образом, ваше "приложение" работает на обычной вкладке Safari, где getuserMedia доступен
  • используя фреймворк, такой как Apache Cordova, который предоставляет вам доступ к камере устройства другими способами.

вот надеясь, что Apple удаляет этот WebRTC ограничение скорее раньше, чем позже...

источник:
для разработчиков, которые используют WebKit в своих приложениях, RTCPeerConnection и RTCDataChannel доступны в любом веб-представлении, но доступ к камере и микрофону в настоящее время ограничен Safari.

хорошая новость! Камера, наконец, кажется, доступна из веб-приложения на главном экране в первой бета-версии iOS 11.3.

Я сделал РЕПО с несколькими файлами, которые демонстрируют, что он работает:

https://github.com/joachimboggild/uploadtest

шаги для проверки:

  1. подавайте эти файлы с веб-сайта, доступного с вашего телефона
  2. открыть индекс.html в iOS Safari
  3. добавить в дом экран
  4. Откройте приложение с главного экрана. Теперь веб-страница открыта в полноэкранном режиме, без интерфейса навигации.
  5. нажмите "файл", чтобы выбрать изображение с камеры.

теперь камера должна работать нормально и не быть черным экраном. Это показывает, что функциональность работает снова.

Я должен добавить, что я использую простое поле, а не getUserMedia или somesuch. Я не знаю, если это работает.

Это, кажется, снова работает в iOS 11.4, если вы используете поле ввода файла.