Detection de mobile et tablette coté serveur

Elise Janvier · le 31/07/13 à 11:32

Bonjour,

 

Pour un projet en  8.0.1, j'ai besoin de detecter la navigation avec une tablet ou un telephone coté serveur. Je songe a faire la detection avec le "User-Agent" de la request.

Quel solution préconiser vous ?

- un filter j2EE (necesite des  modif du web.xml)

- un filter jalios ? (PortalPolicyFilter)

- autre.

 

17 pts
Kevin Bransard - le 31/07/13 à 16:02
Meilleure réponse

La classe browser permet de déterminer si le browser est un ipad via isIpad().
Cependant la classe va surement subir des changements pour la version 9 de JCMS afin de par exemple fournir des outils facilitant la mise en place du responsive design.

Vous pouvez actuellement déterminer si le browser est une tablette via :

  • Browser.isIpad()
  • En analysant le UserAgent et en testant qu'il contient "Android" et qu'il ne contient pas "Mobile" (Les téléphones android contiennent dans leur user agent "Android" et "Mobile" 
  • Il reste cependant des cas particuliers à traiter comme les tablettes galaxy tab qui sont Android & Mobile.
9 pts
Nicolas Donato · le 31/07/13 à 14:41

Bonjour,

Vous pouvez utiliser l'objet com.jalios.util.Browser de Jcms. C'est une classe qui est instanciée directement lors de l'appel d'une page JCMS.

Pour la récupérer du côté jsp, vous pouvez utiliser le code suivant : clientBrowser.isSmallDevice()

Du côté java, du moment que l'internaute a ouvert affiché une page, le Browser peut être vu par le code suivant : Channel.getChannel().getCurrentJcmsContext().getBrowser().isSmallDevice()

0 pt
Elise Janvier · le 31/07/13 à 15:22

Je ne connaissais pas cette classe, merci.

Mais elle ne couvre pas tout mon besoin puisque .isSmallDevice() me renvoi false sur tablette.

apres je ne suis pas certaine que l'on puisse detecter une tablette d'un destop du coté serveur.

 

#1

Je n'ai pas mis le liens vers la JavaDoc : com.jalios.util.Browser

Je ne sais pas si on peut faire la différence entre un pc et une tablette en fonction des UserAgent...

Mais vous pouvez produire un traitement spécial en fonction de la largeur et hauteur des différents écrans :

clientBrowser.getDeviceScreenHeight() 

et

clientBrowser.getDeviceScreenWidth()  

De plus si vous voulez un traitement spécifique via le UserAgent vous pouvez le récupérer par ce code :

clientBrowser.getUserAgent()

Si vous avez un moyen via les UserAgent de récupérer les différentes tablettes, je pense que Jalios serait preneur pour enrichir la classe Browser.

Cordialement,

Nicolas

Nicolas Donato · le 31/07/13 à 15:56
#2

Bonjour Nicolas,

clientBrowser.getDeviceScreenWidth() me retourne -1 sur tablette est ce que c'est normal ?

Adil BENDIABDELLAH · le 17/04/17 à 18:39
0 pt