37 Stimmen

Wie überprüfe ich, ob der Useragent ein ipad oder iphone ist?

Ich verwende eine C# asp.net Website.

Wie kann ich überprüfen, ob der Benutzer ein ipad oder ein iphone benutzt? Wie kann ich die Plattform überprüfen?

Zum Beispiel, wenn der Benutzer die Website von einem iPad aus aufruft, würde ich gerne "Hallo ipad Benutzer" anzeigen.

73voto

Oleks Punkte 31284

UPDATE am 17-07-2020 : es sieht so aus, als hätte Apple das Wort iPad und verwenden nun Macintosh stattdessen

UPDATE : Da der iPad User Agent das Wort iPhone als @Rob Hruska erwähnt :

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

und der iPhone-Benutzer-Agent ist etwas wie este :

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

wäre es richtig, nach dem Wort iPhone; o iPad; um das Gerät zu identifizieren:

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

22voto

Shekhar_Pro Punkte 17558

Für iPad Benutzer-Agent ist etwa so:

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

und für das iPhone so etwas wie:

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

Noch viel mehr, je nach Version und ob es sich um ein iPhone 3 oder 4 handelt

also besser einfach eine Teilstringsuche für iPhone und iPad durchführen wie in einer anderen Antwort vorgeschlagen

5voto

Marc Gravell Punkte 970173

Der User-Agent für diese Geräte umfasst je nach Fall "iPod", "iPad" oder "IPhone". Beachten Sie, dass mehrere User-Agents im Spiel sind, so dass ein genau Spiel ist unklug - aber schauen Sie selbst von Ihrem Gerät en http://whatsmyuseragent.com

Überprüfen Sie daher den User-Agent in den Kopfzeilen.

4voto

Bala R Punkte 104615

Können Sie das tun, indem Sie den UserAgent abrufen

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

4voto

superlogical Punkte 13526

Ich würde zuerst WURFL ausprobieren http://wurfl.sourceforge.net/

Sie haben .NET API und sehr gute Codebeispiele. http://wurfl.sourceforge.net/dotnet_index.php

Die Klasse, die Ihnen helfen wird, heißt WURFLManager und verfügt über die folgenden Methoden:

enter image description here

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

Wenn Sie asp.net mvc verwenden, können Sie einen ActionFilter verwenden

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);
        }
    }
}

Es gibt auch 51Degrees.Mobi Steve Sanderson hat in seinem Blog beschrieben, wie man das macht http://blog.stevensanderson.com/2010/12/17/using-51degreesmobi-foundation-for-accurate-mobile-browser-detection-on-aspnet-mvc-3/

51Degrees.Mobi Foundation ist ein Open-Source-.NET-Projekt, das Request.Browser so erweitert, dass es seine Informationen von Drahtlose universelle Ressourcendatei (WURFL) - eine der umfassendsten und aktuellsten Datenbanken mit Informationen über mobile Geräte. Die gute Nachricht ist, dass 51Degrees.Mobi Foundation jetzt als NuGet-Paket verfügbar ist, sodass es unglaublich einfach zu installieren und zu aktualisieren ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X