webentwicklung-frage-antwort-db.com.de

Wie greife ich mit der iOS11-Web-App auf die Kamera zu?

Zusammenfassung

Wir können von einer iOS11-Webanwendung (öffentliches Release) auf dem Startbildschirm weder über WebRTC noch über die Dateieingabe auf die Kamera zugreifen (siehe unten). Wie können unsere Benutzer weiterhin auf die Kamera zugreifen?

Wir bedienen die Web-App-Seite über https.

Update, April

Update, März

Wie die Leute hier gesagt haben, kehrt die Funktion Apple docs advise web app camera zusammen mit den Servicemitarbeitern in Version 11.3 zurück. Dies ist gut, aber wir sind uns noch nicht sicher, ob wir eine erneute Neuinstallation von allen bis zu dieser Version wünschen Wir können auf 11.3GM gründlich testen.

Lösung, November

Update, 6. Dezember

iOS 11.2 und iOS 11.1.2 können nicht repariert werden.

Problemumgehungen, 21. September

Scheint, wir könnten bestehende Kunden der Web-App fragen

  • nicht auf iOS11 upgraden - viel Glück damit :)
  • nehmen Sie Fotos mit der iOS-Kamera auf und wählen Sie sie dann in der Web-App aus
  • warte auf die nächste ios beta
  • neuinstallation als Safari-In-Browser-Seite (nachdem wir die ATHS-Logik entfernt haben)
  • zu Android wechseln

Dateieingabe

Unser aktueller Produktionscode verwendet eine Dateieingabe, die seit Jahren mit iOS 10 und älter einwandfrei funktioniert. Unter iOS11 funktioniert es als Safari-Registerkarte, jedoch nicht über die Startbildschirm-App. Im letzteren Fall wird die Kamera geöffnet und es wird nur ein schwarzer Bildschirm angezeigt, daher ist es unbrauchbar.

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

WebRTC

Safari 11 auf iOS11 bietet WebRTC Media Capture , was großartig ist.

Mit navigator.mediaDevices.getUserMedia können wir ein Kamerabild auf einer normalen Webseite auf dem Desktop und auf dem Mobilgerät auf Leinwand aufnehmen. Verwenden Sie dazu den hier verlinkten Beispielcode .

Wenn wir die Seite zum iPad- oder iPhone-Startbildschirm hinzufügen, wird navigator.mediaDevices wird undefined und ist unbrauchbar.

    <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;
111
ajayel

Wir haben ein ganz ähnliches Problem. Bisher konnten wir nur das Meta-Tag entfernen, damit es "Apple-Mobile-Web-App-fähig" ist, und den Benutzern ermöglichen, es in Safari zu öffnen, wo anscheinend alles normal funktioniert.

21
Tomas Vitasek

Update : Einige früher veröffentlichte Änderungsprotokolle und Postings haben mich zu der Annahme veranlasst, dass Web-Apps einen manifest.json Anstelle von Apple-mobile-web-app-capable Verwenden. hätte endlich Zugriff auf eine ordnungsgemäße WebRTC-Implementierung, dies ist leider nicht wahr, wie andere hier darauf hingewiesen haben und Tests bestätigt haben. Trauriges Gesicht. Wir entschuldigen uns für die Unannehmlichkeiten und hoffen, dass uns an einem glücklichen Tag in einer weit entfernten Galaxie Apple endlich Kamerazugriff in Ansichten gewährt wird, die von (nicht-Safari) WebKit unterstützt werden ...

Ja, wie andere bereits erwähnt haben, ist getUserMedia nur direkt in Safari verfügbar, jedoch weder in einer UIWebView noch in einer WKWebView. Sie haben also leider nur die Wahl

  • entfernen von <meta name="Apple-mobile-web-app-capable" content="yes">, damit Ihre 'App' auf einem normalen Safari-Tab ausgeführt wird, auf den getuserMedia zugreifen kann
  • verwenden Sie ein Framework wie Apache Cordova, mit dem Sie auf andere Weise auf die Kamera eines Geräts zugreifen können.

Wir hoffen, dass Apple diese WebRTC-Einschränkung eher früher als später aufhebt ...

Quelle:
Für Entwickler, die WebKit in ihren Apps verwenden, sind RTCPeerConnection und RTCDataChannel in jeder Webansicht verfügbar, der Zugriff auf Kamera und Mikrofon ist jedoch derzeit auf Safari beschränkt.

21

Gute Nachrichten! Die Kamera scheint in der ersten Betaversion von iOS 11.3 über eine Web-App auf dem Startbildschirm verfügbar zu sein.

Ich habe ein Repo mit ein paar Dateien gemacht, die zeigen, dass es funktioniert:

https://github.com/joachimboggild/uploadtest

Schritte zum Testen:

  1. Stellen Sie diese Dateien von einer Website bereit, auf die Sie über Ihr Telefon zugreifen können
  2. Öffnen Sie die index.html in iOS Safari
  3. Zum Startbildschirm hinzufügen
  4. Öffnen Sie die App vom Startbildschirm aus. Jetzt ist die Webseite im Vollbildmodus ohne Navigationsoberfläche geöffnet.
  5. Drücken Sie die Datei-Taste, um ein Bild von der Kamera auszuwählen.

Jetzt sollte die Kamera normal funktionieren und kein schwarzer Bildschirm sein. Dies zeigt, dass die Funktionalität wieder funktioniert.

Ich muss hinzufügen, dass ich ein einfaches Feld verwende, nicht getUserMedia oder ähnliches. Ich weiß nicht, ob das funktioniert.

14

Anscheinend ist in "iOS 13 Beta 1" gelöst: https://Twitter.com/ChromiumDev/status/1136541745158791168?s=09

2
jvitor83

Dies scheint in iOS 11.4 wieder zu funktionieren, wenn Sie ein Dateieingabefeld verwenden.

1
aalcutt