how do I detect user operating system

前端 未结 11 928
难免孤独
难免孤独 2020-12-01 03:58

I have the following code to obtain user details:

HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
string UserAgent = HttpContext.Current.Re         


        
11条回答
  •  一生所求
    2020-12-01 04:17

    Here's what I came up with and it seems to work fairly well:

    public String GetUserEnvironment(HttpRequest request)
    {
        var browser = request.Browser;
        var platform = GetUserPlatform(request);
        return string.Format("{0} {1} / {2}", browser.Browser, browser.Version, platform);
    }
    
    public String GetUserPlatform(HttpRequest request)
    {
        var ua = request.UserAgent;
    
        if (ua.Contains("Android"))
            return string.Format("Android {0}", GetMobileVersion(ua, "Android"));
    
        if (ua.Contains("iPad"))
            return string.Format("iPad OS {0}", GetMobileVersion(ua, "OS"));
    
        if (ua.Contains("iPhone"))
            return string.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 string.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";
    
        //fallback to basic platform:
        return request.Browser.Platform + (ua.Contains("Mobile") ? " Mobile " : "");
    }
    
    public String GetMobileVersion(string userAgent, string device)
    {
        var temp = userAgent.Substring(userAgent.IndexOf(device) + device.Length).TrimStart();
        var version = string.Empty;
    
        foreach (var character in temp)
        {
            var validCharacter = false;
            int test = 0;
    
            if (Int32.TryParse(character.ToString(), out test))
            {
                version += character;
                validCharacter = true;
            }
    
            if (character == '.' || character == '_')
            {
                version += '.';
                validCharacter = true;
            }
    
            if (validCharacter == false)
                break;
        }
    
        return version;
    }
    

提交回复
热议问题