No podemos acceder a la cámara desde una aplicación web de la pantalla de inicio de iOS11 (versión pública) usando WebRTC o la entrada de archivo, detalles a continuación. ¿Cómo pueden nuestros usuarios continuar accediendo a la cámara, por favor?
Estamos sirviendo la página de la aplicación web a través de https.
Como la gente aquí ha dicho, los documentos de Apple aconsejan que la función de cámara de la aplicación web regrese en 11.3 junto con los trabajadores de servicio. Esto es bueno, pero aún no estamos seguros de si queremos que todos vuelvan a instalarlo hasta que podamos probar a fondo en 11.3GM.
iOS 11.2 e iOS 11.1.2 no solucionan.
Parece que podríamos preguntar a los clientes existentes de la aplicación web
Nuestro código de producción actual utiliza una entrada de archivo que ha funcionado bien durante años con iOS 10 y versiones anteriores. En iOS11 funciona como una pestaña de Safari, pero no desde la aplicación de la pantalla de inicio. En este último caso se abre la cámara y solo se muestra una pantalla en negro, por lo que queda inutilizable.
<meta name="apple-mobile-web-app-capable" content="yes"> ... <input type="file" accept="image/*">Safari 11 en iOS11 ofrece captura de medios WebRTC, lo cual es excelente.
Podemos capturar una imagen de cámara en un lienzo en una página web normal en computadoras de escritorio y dispositivos móviles usando navigator.mediaDevices.getUserMedia según el código de muestra vinculado aquí .
Cuando agregamos la página a la pantalla de inicio de iPad o iPhone, navigator.mediaDevices se vuelve undefined e inutilizable.
<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;Tenemos un problema bastante similar. Hasta ahora, la única solución que pudimos hacer es eliminar la metaetiqueta para que sea "apple-mobile-web-app-capable" y permitir que los usuarios la abran en Safari, donde todo parece funcionar normalmente.
Actualización : si bien algunos registros de cambios y publicaciones publicados anteriormente me llevaron a creer que las aplicaciones web que usan un manifest.json en lugar de apple-mobile-web-app-capable finalmente tendrían acceso a una implementación WebRTC adecuada, desafortunadamente esto no es cierto, como otros aquí han señalado y las pruebas han confirmado. Cara triste. Perdón por los inconvenientes causados por esto y esperemos que un día de suerte en una galaxia muy, muy lejana, Apple finalmente nos dé acceso a la cámara en las vistas con WebKit (no Safari)...
Sí, como han mencionado otros, getUserMedia solo está disponible directamente en Safari, pero no en UIWebView ni WKWebView, por lo que, lamentablemente, sus únicas opciones son
<meta name="apple-mobile-web-app-capable" content="yes"> para que su 'aplicación' se ejecute en una pestaña normal de Safari, donde se puede acceder a getuserMediaAquí está la esperanza de que Apple elimine esta restricción de WebRTC más temprano que tarde …
¡Buenas noticias! Parece que finalmente se puede acceder a la cámara desde una aplicación web de la pantalla de inicio en la primera versión beta de iOS 11.3.
He hecho un repositorio con algunos archivos, que demuestran que funciona:
https://github.com/joachimboggild/uploadtest
Pasos para probar:
Ahora la cámara debería funcionar normalmente y no ser una pantalla negra. Esto demuestra que la funcionalidad funciona de nuevo.
Debo agregar que uso un campo simple, no getUserMedia o algo así. No sé si eso funciona.