37 votes

Comment vérifier si l'agent utilisateur est un iPad ou un iPhone?

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

Comment puis-je vérifier si l'utilisateur utilise l'ipad ou l'iphone? Comment puis-je vérifier la plateforme?

Par exemple, si l'utilisateur accède au site Web à partir de l'ipad, j'aimerais afficher "Bonjour utilisateur de l'ipad"

73voto

Alex Points 19487

Mise à JOUR: Depuis l'iPad de l'agent utilisateur contient le mot iPhone comme @Rob Hruska mentionné:

Mozilla/5.0(iPad; U; PROCESSEUR de l'iPhone OS 3_2 comme Mac OS X; fr-fr) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10

et iPhone de l'agent utilisateur est quelque chose comme ceci:

Mozilla/5.0 (iPhone; U; PROCESSEUR de l'iPhone OS 4_0 comme Mac OS X; fr-fr) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

il serait bon de vérifier pour le mot - iPhone; ou iPad; pour identifier le dispositif:

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

22voto

Shekhar_Pro Points 10465

Pour l'iPad de l'agent utilisateur est quelque chose comme:

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

et pour l'iPhone de son quelque chose comme:

Mozilla/5.0 (iPhone; U; CPU comme sur Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3

Tous les beaucoup plus en fonction de la version et de sa météo de l'iPhone 3 ou 4

afin de mieux il suffit de faire une sous-chaîne de recherche pour l'iPhone et l'iPad, comme l'a suggéré une autre réponse

5voto

Marc Gravell Points 482669

L'agent utilisateur de ces appareils comprend "iPod", "iPad" ou "IPhone" selon le cas. Notez qu'il y a plusieurs agents utilisateurs en jeu, donc une correspondance exacte n'est pas judicieuse - mais jetez un œil à votre appareil sur http://whatsmyuseragent.com

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

4voto

superlogical Points 5129

Je voudrais essayer WURFL première http://wurfl.sourceforge.net/

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

La classe qui va vous aider est appelé WURFLManager et possède les méthodes suivantes:

enter image description here

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

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

public class MobileActionFilterAttribute : ActionFilterAttribute
{
    // 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 MobileActionFilterAttribute ()
    {
        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, StringComparison.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 string 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 = string.Equals(deviceInfo.GetCapability("is_tablet") ?? string.Empty, "true", StringComparison.OrdinalIgnoreCase);

        if (isTablet)
        {
            // so we don't show the mobile site for iPad.
            return;
        }

        // Indicates whether the current user agent string 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 = string.Equals(deviceInfo.GetCapability("is_wireless_device") ?? string.Empty, "true", StringComparison.InvariantCultureIgnoreCase);

        if (isMobileRequest && isWirelessDevice)
        {
            // we can redirect to the mobile site!
            filterContext.Result = new RedirectResult(SiteConfiguration.Current.MobileSiteAddress);
        }
    }
}

Il est également 51Degrees.Mobi Steve Sanderson a couvert la façon de le faire sur son blog http://blog.stevensanderson.com/2010/12/17/using-51degreesmobi-foundation-for-accurate-mobile-browser-detection-on-aspnet-mvc-3/

51Degrees.Mobi Fondation est un open source .Un projet de réseau qui améliore à la Demande.Navigateur de manière à ce qu'il obtient ses informations de l' Universel sans Fil Fichier de Ressources (WURFL) – l'une des plus complètes et à jour des bases de données des informations sur l'appareil mobile. La bonne nouvelle, c'est que 51Degrees.Mobi Fondation est maintenant disponible sous forme de package NuGet, de sorte qu'il est incroyablement facile à installer et à mettre à jour.

4voto

Bala R Points 57552

vous pouvez le faire en obtenant le UserAgent

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X