0 votes
in SoSci Survey (dt.) by s068944 (400 points)

Guten Tag,

ich habe in meiner Befragung (die Smartphone-basiert erfolgt) einen Foto-Upload drin. Ich habe das auf einem Android-Gerät probiert und es funktioniert, nicht so bei einem iPhone.
Woran könnte es liegen? Alter des Gerätes? iOs? Nicht die aktuellste Software? Kann man das Problem irgendwie umgehen oder sind andere solcher Fälle bekannt?
Hier ist ein Pretest-Link (Achtung, da kommen ein paar Fehlermeldungen, weil es nicht die erste Fragebogenseite ist): https://www.soscisurvey.de/MTMDD06/?act=uThcBoX9NfSqRQ9xs3TdEiu3

Für Hilfe wäre ich sehr dankbar!
Herzlichen Dank und lieben Gruß

1 Answer

0 votes
by SoSci Survey (302k points)

Das Problem ist wohl, dass iPhone bzw. Safari die Funktionen zum Erfassen von Fotos bis Safari 10 nicht unterstützt:

Support for getUserMedia() is pretty good, but it isn't yet everywhere. In particular, it is not available in Safari 10 or lower, which at the time of writing is still the latest stable version. However, Apple have announced that it will be available in Safari 11.
https://developers.google.com/web/fundamentals/media/capturing-images/

Soweit so schlecht. Die gute Nachricht ist, dass es eine Funktion gibt, welche auch auf dem iPhone funktioniert:

<input type="file" accept="image/*" capture="environment">

Die schlechte Nachricht dazu ist, dass das in SoSci Survey so noch nicht vorgesehen ist. Aber zur schlechten gibt es natürlich auch eine gute Nachricht: Sie können im Safari eine Frage vom Typ "Datei hochladen" einbinden und dann mit einer Zeile JavaScript die Attribute accept und capture ergänzen.

Um herauszufinden, ob es Safari oder ein anderer Browser ist, verwenden Sie bitte eine Frage vom Typ "Gerät und übermittelte Variablen".

by s068944 (400 points)
edited by s068944
Vielen Dank für Ihre Erläuterungen!
Und wie (und vor allem an welcher Stelle) kann ich das Javascript einbinden (als HTML-Code?)? Ich habe es jetzt ohne Javascript gemacht und es funktioniert trotzdem :-) (zumindest auf meinem alten iPhone).

Optimal wäre aber, wiegesagt, wenn die Teilnehmer direkt ein Foto aufnehmen könnten (Foto oder Wecam von Smartphone) --> kann man da noch irgend etwas für alte iPhones machen?
by SoSci Survey (302k points)
> Verstehe ich es richtig, dass mit dieser Funktion nicht direkt ein Bild aufgenommen werden kann, sondern dass die Teilnehmer aus dem Browser rausgehen müssen, ein Foto aufnehmen und es dann uploaden?

Ich habe es noch nicht getestet. Aber eigentlich sollte der Browser nach Anklicken des Eingabefelds anbieten, dass man ein Foto macht und dieses direkt hochladen (s. Screenshot auf der oben verlinkten Website). Also ohne großen Umweg.

> Und wie (und vor allem an welcher Stelle) kann ich das Javascript einbinden?

Ich empfehle erstmal mittels PHP-Code einen Filter nach Browser. Wenn es Safari ist, dann binden Sie eine Datei-Upload-Frage ein und direkt darunter als HTML-Code das Script. Und wenn es ein anderer Browser ist, dann bleibem Sie bei der bisherigen Variante.
by s068944 (400 points)
Ich hätte noch eine Frage: wäre es möglich, einen Zeitstempel auf dem Foto, das aufgenommen wird, einzubauen?
by SoSci Survey (302k points)
Für die Variante mit `<input type="file" ...>` ist das m.E. nicht mit JavaScript möglich. Dies müsste - wenn überhaupt - serverseitig passieren, wenn die Datei hochgeladen wurde und auf der Folgeseite zur Verfügung steht.

Vermutlich wäre es aber deutlich einfacher, die aktuelle Zeit (auf der Folgeseite) einfach mit put(..., date('Y-m-d H:i:s')) in eine interne Variable zu speichern.
by s068944 (400 points)
Vielen Dank für die Rückmeldung. Ich frage so speziell, weil es hier (https://support.soscisurvey.de/?qa=11661/konnen-teilnehmer-ein-foto-uploaden) möglich war. Könnte man das nicht auch da umsetzen?
Wenn nein, gebe ich auch Ruhe ;-)
by SoSci Survey (302k points)
In dem Fragetyp, den Sie ja ursprünglich hatten, wurde das Bild mittels JavaScript aufgenommen und dann an den Server übertragen. Für Ihre nicht iPhone-Teilnehmer können Sie das weitehrin machen. Bei dieser Variante ist dasBild für JavaScript "greifbar" und man kann den Zeitstempel hineinmalen.

Wenn man den Upload via ´<input>` erledigt, dann wird das Bild erst beim Klick auf "Weiter" durch den Browser geladen und direkt an den Server übermittelt. JavaScript hat hier keinen direkten Zugriff auf das Bild. Daher der Unterschied.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...