Je pense que nous avons trouvé une régression dans iOS 13.2/13.3 en ce qui concerne les PWA fonctionnant en mode autonome.
Étant donné que sur iOS PWA ne peut pas accéder à getUserMedia (), nous comptons sur l'attribut capture sur la balise d'entrée HTML5 pour permettre à l'utilisateur de prendre une photo et de l'envoyer à un serveur.
Notre code ressemble à ceci:
<div class="camera-upload">
<input type="file" class="hidden" name="uploadPhotoInput" accept="image/*" capture="environment" (change)="onTakePhoto($event)">
<button type="button" class="btn btn-primary">Take photo</button>
</div>
Lorsque nous exécutons le PWA en mode autonome sur des appareils avec iOS 13.1 ou inférieur, tout fonctionne comme prévu. Si nous exécutons le PWA en mode navigateur sur Safari, tout fonctionne quelle que soit la version iOS.
Lorsque nous exécutons le PWA sur des appareils avec iOS 13.2 ou 13.3, la fonctionnalité fonctionne jusqu'à ce que nous mettions le PWA en arrière-plan, puis à nouveau au premier plan. Une fois le PWA envoyé à l'arrière-plan, la capture lance l'appareil photo, mais l'aperçu est noir. Toutes les commandes de l'appareil photo (flash, etc.) fonctionnent, mais aucune photo n'est prise.
Nous exécutons un test avec l'enregistreur de console XCode attaché et il semble qu'AVCaptureSession ne puisse pas être démarré après que l'application a été mise en arrière-plan une fois.
Voici une trace des journaux de l'appareil:
Nous construisons notre PWA avec Angular 8.
Quelqu'un a-t-il vu quelque chose comme ça ou peut-il nous donner un indice?
@elbuild
https://bugs.webkit.org/show_bug.cgi?id=206219
Le bug a été publié ici. N'hésitez pas à contribuer également à l'affichage pour gagner du terrain, je ferai de même
Enfin, cela a été résolu dans iOS13.4
Euh ... non. 13.4 le fait toujours, désolé.
Je dis simplement aux utilisateurs que s'ils l'obtiennent, ils doivent effacer l'application pour la fermer (plutôt que de simplement rentrer à la maison). Une mauvaise solution de contournement, mais j'espère qu'un vrai correctif arrivera un jour.