Comment vérifier si l’utilisateur est un ipad ou un iphone?

J’utilise un site Web C # asp.net.

Comment puis-je vérifier si l’utilisateur utilise ipad ou iphone? Comment puis-je vérifier la plate-forme?

Par exemple, si l’utilisateur entre le site Web à partir d’ipad, j’aimerais afficher “Bonjour utilisateur ipad”.

Pour l’agent utilisateur iPad , cela ressemble à quelque chose comme:

Mozilla / 5.0 (iPad; U; CPU iPhone OS 3_2 comme Mac OS X; en-us) AppleWebKit / 531.21.10 (KHTML comme Gecko) Version / 4.0.4 Mobile / 7B314 Safari / 531.21.10

et pour iPhone sa somthing comme:

Mozilla / 5.0 (iPhone; U; CPU similaire à Mac OS X; en) AppleWebKit / 420 + (KHTML tel que Gecko) Version / 3.0 Mobile / 1A543a Safari / 419.3

Encore plus selon la version et le temps qu’il fait sur son iPhone 3 ou 4

alors mieux vaut juste faire une recherche de sous-chaîne pour iPhone et iPad comme suggéré par une autre réponse

UPDATE : Puisque l’utilisateur d’utilisateur iPad contient le mot iPhone tel que mentionné par @Rob Hruska:

Mozilla / 5.0 (iPad; U; CPU iPhone OS 3_2 comme Mac OS X; en-us) AppleWebKit / 531.21.10 (KHTML comme Gecko) Version / 4.0.4 Mobile / 7B314 Safari / 531.21.10

et l’agent d’utilisateur iPhone ressemble à ceci :

Mozilla / 5.0 (iPhone; U; CPU iPhone OS 4_0 comme Mac OS X; en-us) AppleWebKit / 532.9 (KHTML comme Gecko) Version / 4.0.5 Mobile / 8A293 Safari / 6531.22.7

il serait correct de vérifier le mot iPhone; ou iPad; pour identifier l’appareil:

 var userAgent = HttpContext.Current.Request.UserAgent.ToLower(); if (userAgent.Contains("iphone;")) { // iPhone } else if (userAgent.Contains("ipad;")) { // iPad } else { // Think Different ;) } 

L’agent utilisateur pour ces périphériques comprend “iPod”, “iPad” ou “IPhone”, selon le cas. Notez qu’il y a plusieurs agents utilisateurs en jeu, il est donc déconseillé de faire une correspondance exacte – mais consultez votre appareil à l’ adresse http://whatsmyuseragent.com.

Vérifiez donc l’agent utilisateur dans les en-têtes.

vous pouvez le faire en obtenant le UserAgent

 ssortingng ua = Request.UserAgent; if (ua != null && (ua.Contains("iPhone") || ua.Contains("iPad"))) { ... ... ... } 

Je voudrais d’abord essayer WURFL http://wurfl.sourceforge.net/

Ils ont .NET API et très bons exemples de code. http://wurfl.sourceforge.net/dotnet_index.php

La classe qui vous aidera s’appelle WURFLManager et comporte les méthodes suivantes:

entrez la description de l'image ici

Utilisez WURFL http://wurfl.sourceforge.net/dotnet_index.php

Si vous utilisez asp.net mvc, vous pouvez utiliser un ActionFilter

 public class MobileActionFilterAtsortingbute : ActionFilterAtsortingbute { // The WURFL database contains information about a huge number of devices and mobile browsers. // http://wurfl.sourceforge.net/ // http://wurfl.sourceforge.net/dotnet_index.php // http://wurfl.sourceforge.net/help_doc.php private static readonly IWURFLManager WurflManager; static MobileActionFilterAtsortingbute () { IWURFLConfigurer configurer = new ApplicationConfigurer(); WurflManager = WURFLManagerBuilder.Build(configurer); } public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpRequestBase request = filterContext.RequestContext.HttpContext.Request; // We don't have ARR server for dev environment, so we still need to check to see if the current domain name is the mobile site. if (request.Url.AbsoluteUri.StartsWith(SiteConfiguration.Current.MobileSiteAddress, SsortingngComparison.OrdinalIgnoreCase)) { return; } // Creates a WURFLRequest object from an ASP.NET HttpRequest object WURFLRequest wurflRequest = WURFLRequestFactory.CreateRequest(HttpContext.Current.Request); // Indicates whether the current user agent ssortingng refers to a desktop agent. if (wurflRequest.IsDesktopRequest) return; // Get the information about the device IDevice deviceInfo = WurflManager.GetDeviceForRequest(wurflRequest); // Tells you if a device is a tablet computer (iPad and similar, regardless of OS) bool isTablet = ssortingng.Equals(deviceInfo.GetCapability("is_tablet") ?? ssortingng.Empty, "true", SsortingngComparison.OrdinalIgnoreCase); if (isTablet) { // so we don't show the mobile site for iPad. return; } // Indicates whether the current user agent ssortingng refers to a mobile device. bool isMobileRequest = wurflRequest.IsMobileRequest; // Tells you if a device is wireless or not. Specifically a mobile phone or a PDA are considered wireless devices, a desktop PC or a laptop are not bool isWirelessDevice = ssortingng.Equals(deviceInfo.GetCapability("is_wireless_device") ?? ssortingng.Empty, "true", SsortingngComparison.InvariantCultureIgnoreCase); if (isMobileRequest && isWirelessDevice) { // we can redirect to the mobile site! filterContext.Result = new RedirectResult(SiteConfiguration.Current.MobileSiteAddress); } } } 

Il y a aussi 51Degrees.Mobi Steve Sanderson a expliqué comment faire cela sur son blog http://blog.stevensanderson.com/2010/12/17/using-51degreesmobi-foundation-for-accurate-mobile-browser-detection-on -aspnet-mvc-3 /

51Degrees.Mobi Foundation est un projet .NET open source qui améliore Request.Browser afin qu’il obtienne ses informations à partir du fichier de ressources universelles sans fil (WURFL) , l’une des bases de données les plus complètes et à jour d’informations sur les appareils mobiles. La bonne nouvelle est que 51Degrees.Mobi Foundation est maintenant disponible sous forme de package NuGet. Il est donc extrêmement facile à installer et à mettre à jour.

Attention aux téléphones Windows! Pour des raisons étranges, de nombreux téléphones Windows appellent “comme l’iPhone” dans l’agent utilisateur. Donc, vous voulez vérifier:

 public bool IsIPhone { get { if (!UserAgent.ToUpper().Contains("LIKE IPHONE")) { return UserAgent.ToUpper().Contains("IPHONE"); } return false; } } 

Exemple d’agent utilisateur de téléphone Windows (à partir de Lumia 735):

“Mozilla / 5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0; Touch; RV: 11.0; IEMobile / 11.0; NOKIA; Lumia 735) comme iPhone OS 7_0_3 Mac OS X AppleWebKit / 537 (KHTML, comme Gecko ) Safari mobile / 537 ”

 private static final Pattern IPHONE_AGENT = Pattern.comstack(".*iPad.*|.*iPhone.*|.*iPod.*"); Ssortingng userAgent = request.getHeader("User-Agent"); if (userAgent != null && IPHONE_AGENT.matcher(userAgent).matches()) { // do something } 

vous pouvez obtenir les données du système d’exploitation client à partir de Request.UserAgent obtenir le nom et la version du système d’exploitation.

  public static ssortingng GetClientOS(ssortingng ua, ssortingng platform) { if (ua.Contains("Android")) return ssortingng.Format("Android {0}", GetMobileVersion(ua, "Android")); if (ua.Contains("iPad")) return ssortingng.Format("iPad OS {0}", GetMobileVersion(ua, "OS")); if (ua.Contains("iPhone")) return ssortingng.Format("iPhone OS {0}", GetMobileVersion(ua, "OS")); if (ua.Contains("Linux") && ua.Contains("KFAPWI")) return "Kindle Fire"; if (ua.Contains("RIM Tablet") || (ua.Contains("BB") && ua.Contains("Mobile"))) return "Black Berry"; if (ua.Contains("Windows Phone")) return ssortingng.Format("Windows Phone {0}", GetMobileVersion(ua, "Windows Phone")); if (ua.Contains("Mac OS")) return "Mac OS"; if (ua.Contains("Windows NT 5.1") || ua.Contains("Windows NT 5.2")) return "Windows XP"; if (ua.Contains("Windows NT 6.0")) return "Windows Vista"; if (ua.Contains("Windows NT 6.1")) return "Windows 7"; if (ua.Contains("Windows NT 6.2")) return "Windows 8"; if (ua.Contains("Windows NT 6.3")) return "Windows 8.1"; if (ua.Contains("Windows NT 10")) return "Windows 10"; return platform + (ua.Contains("Mobile") ? " Mobile " : ""); } public static ssortingng GetMobileVersion(ssortingng userAgent, ssortingng device) { var temp = userAgent.Subssortingng(userAgent.IndexOf(device) + device.Length).TrimStart(); var version = ssortingng.Empty; foreach (var character in temp) { var validCharacter = false; int test = 0; if (int.TryParse(character.ToSsortingng(), out test)) { version += character; validCharacter = true; } if (character == '.' || character == '_') { version += '.'; validCharacter = true; } if (validCharacter == false) break; } return version; }