web-dev-qa-db-fra.com

Comment fonctionne IsMobileDevice?

MSDN rend le son si facile à détecter un navigateur mobile:

if (Request.Browser["IsMobileDevice"] == "true" ) 
{
    Response.Redirect("MobileDefault.aspx");
}

En fait, il semblerait que vous puissiez simplement vérifier Request.Browser.IsMobileDevice. Mais comment cela fonctionne-t-il réellement? Je n'ai même pas de fichier .browser ... que se passe-t-il dans les coulisses ici? Existe-t-il des valeurs par défaut intégrées pour ASP.NET 2.0?

40
Bryan

Un certain nombre de fichiers * .browser sont livrés avec .NET:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers

Le moteur d'exécution utilise des expressions régulières issues des fichiers * .browser pour établir une correspondance avec la chaîne User-Agent entrante, puis définit un ensemble de propriétés en fonction de chaque correspondance trouvée (il peut y en avoir plusieurs dans la hiérarchie).

Si vous avez besoin d'une prise en charge approfondie des appareils mobiles, envisagez d'installer le MDBF, qui prend en charge environ 400 appareils:

http://mdbf.codeplex.com/

55
RickNZ

Maintenant, après 4 ans, c'est encore plus simple

Request.Browser.IsMobileDevice
15
VladL

Étant donné que pour la plupart des sites, c'est la taille de l'écran qui compte et non les capacités (du moins lorsque vous parlez de téléphones modernes contenant des éléments tels que Safari et Chrome), est-ce que vérifier la résolution n'aurait pas de sens?

Request.Browser.ScreenPixelsHeight

et

Request.Browser.ScreenPixelsWidth
2
Clever Human

À ce que je sache, il n’ya qu’une solution exacte au problème de détecter si un navigateur est mobile et de détecter ensuite ses capacités réelles. Cette solution est le WURFL de ScientiaMobile (http://www.scientiamobile.com). Ce qui, à partir du 30 août, n’est plus gratuit pour toutes les utilisations. WURFL est maintenant publié avec une API ASP.NET sous AGPL. Le référentiel de données est également fourni avec une licence spécifique qui interdit à la fois la copie et l'utilisation d'API différentes de la norme (sauf si vous achetez une licence commerciale). 

Ainsi, pour des raisons pratiques, d'autres approches telles que 51Degrees ne peuvent pas être utilisées avec les versions plus récentes et futures du référentiel WURFL, ce qui compliquera la tâche de 51Degrees de détecter de nouveaux périphériques (Windows Phone 7.5, par exemple). 

En ce qui concerne MDBF (projet rejeté), il peut toujours fonctionner pour détecter si un périphérique est mobile (bien meilleur que le IsMobileDevice dans ASP.NET). Ce n'est pas entièrement fiable en ce qui concerne les propriétés de l'appareil. Il insiste sur le fait que mon HTC Desire Android a une taille d'écran de 240x320, ce qui est manifestement incorrect.

Mon entreprise a acheté une licence WURFL et cela nous convient parfaitement.

1
Dino Esposito

Je ne m'appuierais pas sur le lien MSDN, il n'existe malheureusement pas de norme commune pour les navigateurs mobiles et beaucoup essaient d'imiter leurs homologues non mobiles. En outre, il retournera true s'il ne reconnaît pas. Voir ce link .

1
kd7

Utilisez simplement le code ci-dessous,

if (Request.Browser.IsMobileDevice) 
{
    Response.Redirect("MobileDefault.aspx");
}
0
Tahir Alvi

Les problèmes ont été résolus alors que j'ajoutais 51Degrees, ajoutez simplement 51degrees en utilisant Nuget c'est tout. Voir plus ici https://51degrees.codeplex.com

0
Shahdat