Archive for the ‘iOS’ Category

iPhone und iPad daran hindern, den Bildschirmschoner / Schlafmodus anzumachen

30. April 2014

Problem: ich habe eine Webseite, die es erfordert, dass die Nutzer 5 Minuten einer Animation zusehen und dabei möglichst nichts anderes tun und eben auch nicht den Bildschirm berühren. Das klappt am Desktop soweit auch gut, aber in der mobilen Version macht das natürlich Probleme. Wenn User eingestellt haben, dass sich der Screensaver / Ruhemodus / Automatische Sperre zu früh einstellt, dann ist vor Ablauf der Zeit natürlich Sense. Der Kunde wollte das Feature aber unbedingt haben und offen gesagt hielt ich es für unmöglich, daran etwas ändern zu können. Aber: es stellt sich raus, mit einem fiesen kleinen Javascript Trick kann man iphone und ipad tatsächlich austricksen! Die Lösung: man täuscht einen regelmäßigen Redirect vor, den man dnan aber vor seiner Ausführung wieder stoppt. Konkret sieht das ganze so aus:

  1. iosSleepPreventInterval = setInterval(function () {
  2. window.location.href = the_path;
  3. window.setTimeout(function () {
  4. window.stop()
  5. }, 0);
  6. }, 30000);

Danke, wie schon so oft, an Stackoverflow für diesen netten Trick!

iOS Facebook App Browser erkennen

16. Oktober 2013

Letztens habe ich festgestellt, dass die iOS originale Facebook App einen eigenen “Browser” hat. Das heißt, wenn man im Facebook auf einen Link klickt, öffnet sich nicht der Safari oder ein anderer Browser, sondern die Facebook App nutzt quasi einen eigenen Browser – und der kann natürlich einige Dinge nicht, beispielsweise ignoriert er auf dem iphone die media queries zum Thema “orientation”. Sehr ungünstig das. Anscheinend kann man das Öffnen in Safari nicht erzwingen, deshalb habe ich behelfsmäßig ein browser detect gebaut. Im HTTP_USER_AGENT werden namlich über Facebook ein paar interessante Daten mitgeliefert udn so kann man feststellen, ob man sich gerade im Facebook Browser am iPad oder am iPhone befindet:

  1. if(preg_match('/FBIOS/i',$_SERVER['HTTP_USER_AGENT']){
  2. //facebook browser
  3. if(preg_match('/iPad/i',$_SERVER['HTTP_USER_AGENT'])){
  4. //facebook browser via ipad
  5. echo "iPad!";
  6. }else{
  7. //facebook browser via iphone
  8. echo "iPhone!";
  9. }
  10. }

Falls es wen interessiert, der HTTP_USER_AGENT liefert am ipad folgendes zurück:

  1. Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465 [FBAN/FBIOS;FBAV/6.5.1;FBBV/377040;FBDV/iPad3,6;FBMD/iPad;FBSN/iPhone OS;FBSV/7.0;FBSS/2; FBCR/;FBID/tablet;FBLC/de_DE;FBOP/1]