Nous ne pouvons pas accéder à la caméra à partir d'une application Web d'écran d'accueil iOS11 (version publique) à l'aide de WebRTC ou de l'entrée de fichier, comme indiqué ci-dessous. Comment nos utilisateurs peuvent-ils continuer à accéder à la caméra, s'il vous plaît?
Nous servons la page des applications Web via https.
Comme les gens ici l'ont dit, la fonction Apple informe la fonction d'application Web de la caméra pour applications Web est de retour dans 11.3 avec les techniciens de maintenance. C'est bien, mais nous ne savons pas encore si nous voulons que tout le monde réinstalle jusqu'à ce que nous puissions effectuer des tests approfondis sur 11.3GM.
iOS 11.2 et iOS 11.1.2 ne résolvent pas.
On pourrait demander aux clients existants de l'application Web
Notre code de production actuel utilise une entrée de fichier qui a bien fonctionné pendant des années avec iOS 10 et les versions antérieures. Sur iOS11, il fonctionne comme un onglet Safari mais pas à partir de l'application de l'écran d'accueil. Dans ce dernier cas, la caméra est ouverte et seul un écran noir est affiché, il est donc inutilisable.
<meta name="Apple-mobile-web-app-capable" content="yes">
...
<input type="file" accept="image/*">
Safari 11 sur iOS11 offre capture de média WebRTC , ce qui est formidable.
Nous pouvons capturer une image de caméra sur un canevas sur une page Web normale sur un ordinateur de bureau ou sur un mobile en utilisant navigator.mediaDevices.getUserMedia per le code exemple lié ici .
Lorsque nous ajoutons la page à l'écran d'accueil de l'iPad ou de l'iPhone, navigator.mediaDevices
devient undefined
et devient inutilisable.
<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;
Nous avons un problème assez similaire. Jusqu'à présent, la seule solution de contournement que nous ayons pu faire est de supprimer la balise méta pour qu'elle soit "compatible Apple-mobile-web-app" et aux utilisateurs de l'ouvrir dans Safari, où tout semble fonctionner normalement.
Mise à jour : Certains journaux de modifications et publications antérieures m'avaient amené à croire que Web Apps utilisait un manifest.json
au lieu de Apple-mobile-web-app-capable
avoir accès à une implémentation WebRTC appropriée, ce n’est malheureusement pas le cas, comme d’autres l’ont souligné ici, et les tests ont confirmé. Visage triste. Désolé pour les inconvénients causés par cela et espérons qu'un jour de chance dans une galaxie très éloignée Apple nous donnera enfin l'accès à l'appareil photo dans des vues optimisées par WebKit (non-Safari) ...
Oui, comme d'autres l'ont déjà mentionné, getUserMedia n'est disponible que directement dans Safari, mais ni dans UIWebView ni dans WKWebView. Par conséquent, vos seuls choix sont les suivants:
<meta name="Apple-mobile-web-app-capable" content="yes">
pour que votre application s'exécute dans un onglet Safari normal, où getuserMedia est accessibleEn espérant que Apple supprime cette restriction WebRTC plutôt tôt que tard ...
Bonnes nouvelles! La caméra semble enfin être accessible depuis une application Web d'écran d'accueil dans la première version bêta d'iOS 11.3.
J'ai fait un repo avec quelques fichiers, ce qui montre que cela fonctionne:
https://github.com/joachimboggild/uploadtest
Étapes pour tester:
Maintenant, la caméra devrait fonctionner normalement et ne pas être un écran noir. Cela démontre que la fonctionnalité fonctionne à nouveau.
Je dois ajouter que j'utilise un champ simple, pas getUserMedia ou quelque chose de ce genre. Je ne sais pas si ça marche.
Apparemment, il est résolu dans "ios 13 beta 1": https://Twitter.com/ChromiumDev/status/1136541745158791168?s=09
Cela semble fonctionner à nouveau dans iOS 11.4 si vous utilisez un champ de saisie de fichier.