Webapp iphone : détecter si l'utilisateur provient de son écran d'accueil
August 1, 2011
Lorsque l'on réalise une webapp, l'utilisateur peut se trouver dans 2 situations différentes :
1) Il est venu sur votre webapp à partir de son navigateur safari.
2) Il a "cliqué" sur une icône de son écran d'accueil (considérons qu'il a "installé" votre application).
Dans la deuxième situation, si vous ajouté les bons headers dans votre webapp (cf. WebApp Iphone: 3 lignes dans votre header qui changent tout),l'utilisateur a donc votre webapp, sur son iphone, en plein écran. Pas dans le premier cas.
Comment savoir, alors, si l'utilisateur a bien "installé" votre webapp, ou s'il la consulte depuis le navigateur safari ?
En faisant un (ô combien crado) print_r($GLOBALS); , pour chacune des deux situations, une différence apparaît, subtile, mais pratique :
Dans la première situation, nous obtenons :
[_SERVER] => Array [HTTP_USER_AGENT] => Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; fr-fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/xxxxx safari/xxxxxDans la deuxième situation :
[_SERVER] => Array [HTTP_USER_AGENT] => Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; fr-fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/xxxxxDans la première situation, $_SERVER['HTTP_USER_AGENT'] contient "safari/xxxx", pas dans la deuxième situation. Et cette différence se retrouve également dans la version 5 d'ios. Ainsi, un simple : [sourcecode language="php"] if(eregi('safari', $_SERVER['HTTP_USER_AGENT'])) [/sourcecode] vous permettra de savoir si l'utilisateur vient de lancer votre webapp ou s'il est encore sur son navigateur. En peaufinant un peu, on peut imaginer une fonction du genre : [sourcecode language="php"] function webapp_installed(){ if(eregi('safari', $_SERVER['HTTP_USER_AGENT']))return false; return true; }[/sourcecode] Fonction qui retourne true si l'utilisateur est dans la situation n°2, ou false en situation n°1.