Resumen
No podemos acceder a la cámara desde una aplicación web de pantalla de inicio iOS11 (lanzamiento público) utilizando WebRTC o la entrada del archivo, detalles a continuación. ¿Cómo pueden nuestros usuarios continuar accediendo a la cámara, por favor?
Servimos la página de la aplicación web a través de https.
Actualización, abril
¡El lanzamiento público de iOS 11.3 parece haber solucionado el problema y el acceso a la cámara de entrada de archivos está funcionando nuevamente!Actualización, marzo
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 del servicio. Esto es bueno, pero aún no estamos seguros si queremos que todos vuelvan a instalar hasta que podamos probar a fondo en 11.3GM.
Solución, noviembre
Perdimos la esperanza de que Apple quiera arreglar esto y seguimos adelante. Modificó nuestra aplicación web para eliminar la función "Agregar a la pantalla de inicio" de iOS y solicitó a los usuarios afectados que eliminaran cualquier icono de la pantalla de inicio anterior.Actualización, 6 de diciembre
iOS 11.2 y iOS 11.1.2 no se arreglan.
Soluciones provisionales, 21 de septiembre
Parece que podríamos preguntar a los clientes existentes de la aplicación web
- no actualice a iOS11 - buena suerte con eso :)
- tomar fotos en la cámara iOS y luego seleccionarlas nuevamente en la aplicación web
- espera la próxima beta de ios
- reinstalar como una página Safari en el navegador (después de eliminar la lógica ATHS)
- cambiar a Android
Entrada de archivo
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 Safari pero no desde la aplicación de pantalla de inicio. En el último caso, la cámara se abre y solo se muestra una pantalla negra, por lo tanto, no se puede usar.
<meta name="apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
WebRTC
Safari 11 en iOS11 ofrece captura de medios WebRTC que es genial.
Podemos capturar una imagen de la cámara en un lienzo en una página web normal en el escritorio y en el móvil usando navigator.mediaDevices.getUserMedia según el código de muestra vinculado aquí .
Cuando agregamos la página a la pantalla de inicio del iPad o iPhone, se navigator.mediaDevices
vuelve undefined
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;