web-dev-qa-db-fra.com

Détecter les appareils mobiles - et les tablettes

Je suis en train de regarder du code pour la détection PHP des mobiles, ce qui est probablement assez facile.

Maintenant, je n’ai plus qu’un problème: je veux pouvoir créer des fichiers de vue uniques dans mon framework MVC pour tablettes, mobiles et pages Web. Je dois donc séparer la tablette du reste des appareils mobiles.

Actuellement, c'est le code que j'utilise:

public function isMobile()
{   
    if(preg_match('/(alcatel|amoi|Android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|iPod|j2me|Java|midp|mini|mmp|mobi|Motorola|nec-|nokia|Palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT']))
    return true;
else
    return false;
}

Mais cela ne suffit pas - la seule vérification est de savoir si le périphérique est un périphérique mobile - sinon, il est standard pour dire au cadre que nous sommes sur un ordinateur. La dernière partie est ok - mais je veux faire une scission des appareils mobiles dans les mobiles réels - et dans un groupe de seconde, qui devrait être des tablettes.

J'espère que j'ai clairement exprimé mon souhait et j'espère que vous apporterez votre contribution pour y parvenir.

Merci d'avance.

22
denlau

Voici une classe avec des méthodes pour détecter chaque plate-forme individuellement.

33
Joe

Vieille question, mais voici mon opinion sur la détection mobile.

Dans votre question, vous indiquez que vous souhaitez des fichiers uniques pour les périphériques mobiles. Je suppose donc que la raison en est de présenter une version différente du site Web pour les clients mobiles et les clients de bureau.

Cette approche est acceptable jusqu'à un certain point. Et ce point s'appelle Android. Il y a ~ 1,5 million appareils Android activés chaque jour avec des résolutions de 320 * 240 à 2560 * 1600, ce qui rend difficile l’application de if {} else pour chacun d’eux. Même si vous essayez de dresser une liste avec les périphériques les plus utilisés et que vous essayez de ne cibler que ceux-ci, il sera difficile de prendre en charge un nouveau périphérique à l'avenir.

Mon approche, il y a quelque temps, consistait à oublier l'ancienne méthode de division des appareils en catégories "mobile" et "de bureau" et à créer une nouvelle méthode. Et cette méthode consiste en "bons" et "mauvais" navigateurs basés sur les capacités du navigateur. Par exemple, si le navigateur prend en charge le stockage local, il sera dans la catégorie "bonne".

À partir de cela, j'ai eu la possibilité de créer une version "de base" du site, très basique du point de vue de l'interface utilisateur, mais qui fonctionnera sur plusieurs navigateurs. Cette version de base du site Web présentera le même contenu (parce que cela compte en fin de journée) sur tous les appareils, sera de très petite taille (moins d’actifs, html plus petit) et sera les capacités du navigateur seront enrichies côté client.

En fin de compte, vous vous retrouverez avec un site Web ayant une très petite empreinte (taille de html et actifs), qui semble OK pour tous les navigateurs et qui prend en charge tout nouveau charger rapidement même sur de mauvaises connexions et qui peut être enrichi côté client en fonction des capacités du navigateur.

Vous pouvez même enrichir la page Web en fonction de la taille de l'appareil: si le navigateur affiche un grand écran, vous pouvez importer plus d'actifs, plus d'annonces et améliorer la beauté de la page Web. si le navigateur signale qu'il est sur un petit écran, vous le laissez tel quel.

8
Alexandru Guzinschi

Mobile_Detect est une classe PHP légère permettant de détecter les appareils mobiles (y compris les tablettes). Il utilise la chaîne User-Agent combinée à des en-têtes HTTP spécifiques pour détecter l'environnement mobile. - En savoir plus http://mobiledetect.net

5
jacksonfdam

Vous pouvez également utiliser une solution plus complète telle que WURFL Cloud, un service qui détecte les capacités des périphériques mobiles, comme is_mobile et is_tablet. Il existe un forfait gratuit pour les sites à faible trafic: http://www.scientiamobile.com/cloud

0
SteveK