Webapp iphone : détecter si l'utilisateur provient de son écran d'accueil
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/xxxxx
Dans 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/xxxxx
Dans 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 :
if(eregi('safari', $_SERVER['HTTP_USER_AGENT']))
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 :
function webapp_installed(){
if(eregi('safari', $_SERVER['HTTP_USER_AGENT']))return false;
return true;
}
Fonction qui retourne true si l'utilisateur est dans la situation n°2, ou false en situation n°1.






