Méthode standard de détection des navigateurs mobiles dans une application Web basée sur la requête http

StackOverflow https://stackoverflow.com/questions/142273

Question

Nous commençons à suivre la voie de la prise en charge des navigateurs mobiles pour une application Web de commerce électronique d'entreprise (basée sur Java / Servlet). Bien sûr, il y a beaucoup de décisions à prendre, mais il me semble que la pierre angulaire est de pouvoir détecter de manière fiable les navigateurs mobiles et de décider du contenu à restituer en conséquence. Existe-t-il un moyen standard de prendre cette décision (rapidement) en fonction de la requête http et, idéalement, de collecter davantage d'informations sur le navigateur et le périphérique à l'origine de la requête (taille de l'écran, capacités HTML, etc.?).

J'apprécierais également toute information supplémentaire qui pourrait être utile de la part de quelqu'un qui s'est engagé dans la voie d'une Webapp d'entreprise à grande échelle existante et de l'architecture du support de navigateur mobile du côté du développement.

[edit] Je comprends certainement l'en-tête de la requête et les informations sur une base de données d'agents utilisateurs standard sont d'une grande aide. Pour ceux qui parlent d’autres propriétés d’en-tête de requête, si vous pouviez inclure un nom / ressource normalisé similaire de valeurs, ce serait très utile.

[modifier] Plusieurs utilisateurs ont proposé des solutions qui impliquent un appel direct à un service Web qui effectuera la détection. Bien que je sois sûr que cela fonctionne, ce n'est pas une bonne solution pour un site de commerce électronique d'entreprise pour deux raisons: 1) la rapidité. Un appel filaire pour chaque demande de page à une tierce partie aurait des conséquences énormes sur les performances. 2) dépendance / légale. Nous associons le temps de réponse et les fonctionnalités clés de notre site Web à leur service, ce qui est horrible pour des raisons juridiques et de risque.

Était-ce utile?

La solution

La méthode standard ne serait-elle pas de vérifier l'agent utilisateur? Voici une base de données d'agents utilisateurs que vous pouvez utiliser pour détecter les navigateurs mobiles.

Autres conseils

@ La réponse de David mentionnait l'utilisation de WURFL - ce qui est probablement votre meilleure option. Soyez prévenu, cependant, le taux de réussite est généralement d’environ 60% (de l’expérience mienne et autre). Avec les opérateurs qui changent constamment d'agents contractuels et le nombre de profils de périphériques existants (plus de 60 000?), Il n'existe aucun moyen infaillible d'obtenir toutes les données pertinentes que vous souhaitez.

Juste un petit avertissement avant de s’appuyer fortement sur une base de données de périphérique. J'essaierais de laisser les options de l'utilisateur ouvertes en leur permettant de modifier les options de la session au cas où je me serais trompé.

Vous pouvez utiliser Modernizer pour détecter les capacités du navigateur

.

Bien que vous puissiez détecter un navigateur mobile via son agent utilisateur, la guerre des navigateurs sur la plate-forme PC a montré que le fait de détecter des agents utilisateurs ne constitue pas vraiment une bonne chose à faire.

L’idéal serait d’appliquer des styles spécifiques en fonction du type de média ou d’envoyer une réponse différente en fonction d’un en-tête autre que l’agent utilisateur - tel que l’en-tête Accept qui spécifie le type de contenu qui le navigateur préfère.

À l'heure actuelle, il suffirait peut-être de coder un site fonctionnant avec l'iPhone et avec Opera via le reniflement du navigateur - mais Googles Android arrive maintenant dans une minute et de nombreux autres téléphones mobiles auront des fonctionnalités de navigateur proches de celles de l'iPhone. créer un site Web mobile qui ne prend pas en charge ces appareils aussi bien que possible à partir de rien.

Après des jours de recherche de la bonne façon de détecter un appareil mobile, j'ai décidé de garder les choses simples [stupide] et je mettrai un bouton "Site d'appareil mobile" sur ma page d'index .... ce n'est qu'un clic loin !!

Cet article (et son suivi ) semble bien.

Détecter les navigateurs mobiles : extraits dans différents langages de programmation.

La configuration Apache légère suivante fait très bien son travail et rappelle les préférences de l'utilisateur s'il préfère la version PC

<VirtualHost (your-address-binding)>   

  (your-virtual-host-configuration)       

  RewriteEngine On     
  RewriteCond %{QUERY_STRING} !ui=pc
  RewriteCond %{HTTP_COOKIE} !ui=pc
  RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*<*>quot; [NC,OR]

  RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*<*>quot; [NC] 

  RewriteRule /(.*) http://bemoko.com/$1 [L]

  RewriteCond %{QUERY_STRING} "ui=pc"
  RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
  RewriteCond %{QUERY_STRING} "ui=default"
  RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
</VirtualHost>

Plus d'informations sur cet @ http://bemoko.com /training.team/help/team/pc-to-mobile-redirect

Je propose un système de détection gratuit basé sur uaprof et user agent: http://www.mobilemultimedia.be UAprof devrait être la clé primaire de détection lorsqu'elle est disponible car il existe généralement plusieurs agents utilisateurs pour le même uaprof. Si vous souhaitez gérer cela vous-même, vous devriez alors opter pour Wurfl car vous pouvez télécharger la base de données complète et la gérer localement par vous-même.

Lorsque j’avais un besoin similaire récemment, j’ai trouvé ce code qui utilise HTTP_X_WAP_PROFILE , HTTP_ACCEPT et HTTP_USER_AGENT pour identifier un navigateur comme mobile ou non mobile. C'est PHP, mais pourrait être converti assez facilement en tout ce dont vous avez besoin (je l'ai implémenté dans VBScript pour ASP classique).

Ironiquement, il s’est avéré que je n’avais pas utilisé le code car nous avions décidé de fournir des URL spécifiques pour les utilisateurs mobiles et non mobiles, mais cela a certainement fonctionné lorsque je l’ai testé ...

Vous obtiendrez la plupart des informations telles que le navigateur, le périphérique, les langues acceptées, les formats acceptés, etc. à partir de l'en-tête de la demande. L’agent utilisateur mentionné ci-dessus fait partie de l’en-tête de la demande.

OK, voici une réponse très simple: pourquoi ne pas laisser l’utilisateur décider? sur votre connexion à votre ap, fournissez un lien vers le site mobile. sur le site mobile, fournissez un lien "retour au site principal". - essayez www.fazolis.com sur votre appareil mobile. Ils y parviennent très bien.

puis, sur le lien vers le site mobile depuis le site du navigateur, enregistrez leur "vote". et leur agent utilisateur. Vous pouvez créer votre propre liste fiable de VOS clients souhaitant accéder au site pour mobile. Utilisez cette option en fonction de la taille de l'écran de ces appareils mobiles, et vous pouvez créer une assez bonne logique pour une expérience utilisateur satisfaisante. Je ne publierais JAMAIS sur une source réseau pour quelque chose d'aussi élémentaire.

Oh, et sur votre " site mobile " - si vous écrivez bien votre texte, vous devriez pouvoir présenter un seul site pour le navigateur et le mobile, au lieu d’avoir à écrire deux ensembles de pages distincts. Juste quelque chose à penser - cela mérite la réflexion et les efforts supplémentaires pour gagner du temps plus tard.

Je ne peux pas le voir affiché ici, mais une autre option sur laquelle je me penche actuellement est www.detectmobilebrowser.com

Le moyen le plus simple est de créer un tableau avec des balises régulières associées aux navigateurs mobiles. Au moins la plupart des agents utilisateurs mobiles doivent avoir le mot mobile, mini, nokia, java ME, androïde, iphone, système d'exploitation mobile, etc. . Laissez l'utilisateur à choisir. J'aime le site complet car mon navigateur mobile me donne la même expérience, sauf que je dois zoomer ou faire défiler la plupart du temps.

Vous devrez vérifier la chaîne de l'agent utilisateur avec une liste définie précédemment, , comme ceci un

vous pouvez utiliser un service Web pour détecter la navigation mobile, comme Handsetdetection.com.

Le fait est que le simple fait de compter sur l'utilisateur n'est pas suffisant pour détecter les navigateurs mobiles.

Bien sûr, il y a des années, vous pouviez rechercher certaines chaînes et deviner que c'était un Nokia ou quelque chose du genre, mais maintenant, il y a tellement de téléphones, et beaucoup prétendent être des choses qui ne sont pas aussi sophistiquées. est nécessaire.

J'ai trouvé un excellent site sur le texte du lien , qui repose sur la même solution que MTV utilise pour tous ses sites Web mobiles. des sites. C’est VRAIMENT bon car il a un langage de balisage indépendant du périphérique, mais plus important encore, ils offrent un appel au service Web pour isMobileDevice ().

Il suffit de regarder dans le manuel puis «comment ça marche».

Je l'utilise pour les sites de mes clients et je n'ai pas encore trouvé de navigateur mobile qu'il ne détecte pas avec précision. Totalement aveuglant!

Vient de rencontrer Détection d'appareils et de fonctionnalités sur le Web mobile avec ces éléments contenu:

  1. Utilisation de la détection de périphérique et de fonctionnalités pour améliorer l'expérience utilisateur sur le Web mobile
  2. Introduction à la détection de périphérique
  3. Approches de la conception de sites mobiles
    1. Ne rien faire
    2. Fournir un site mobile générique
    3. Concevoir avec le mobile et l’adaptation à l’esprit
  4. Adaptation du contenu et stratégies de regroupement de périphériques
    1. Regroupement d'appareils
    2. Adaptation du contenu
  5. Réduire au minimum le besoin d’adaptation
  6. Approches courantes de la détection de périphérique
    1. Adaptation côté serveur
    2. Adaptation côté client
    3. Agent utilisateur (UA) et recherche d'en-tête côté serveur
    4. Chaîne UA côté serveur associée à la recherche dans la base de données de périphériques
    5. Détection de profils d’agent utilisateur (UAProf) côté serveur
    6. Détection basée sur la technologie JavaScript
    7. Types de média CSS
    8. requêtes multimédia CSS
  7. Autres meilleures pratiques
    1. Redirection + lien manuel
    2. page de destination + lien manuel
  8. Exemple de page téléchargeable

vous pouvez utiliser les API WURFL pour détecter le type de périphérique

http://wurfl.sourceforge.net/wurfl_schema.php

ou Modernizer pour détecter les capacités du navigateur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top