【问题标题】:asp.net: How to detect iOS/Android?asp.net:如何检测 iOS/Android?
【发布时间】:2011-06-01 13:29:51
【问题描述】:

我最近推出了一个用 C#/.net 4.0 编写的网络应用程序,它广泛使用 jQuery 和 jQuery UI 来提供尽可能好的用户体验。

但是,一些用户在通过 iPhone 或 Android 设备使用该网站时报告了问题。

检测 iOS 和 Android 的最佳接受方法是什么?这样我就可以调整每个浏览器的 UI。

【问题讨论】:

标签: c# asp.net android ios


【解决方案1】:

一般来说,您应该检测浏览器服务器端,然后将正确的模板/视口呈现给浏览器。检查浏览器发送到服务器的用户代理字符串 - iOS 通常包含子字符串“iPhone”,Android 使用“Android”后跟版本号(“Android 2.2”)

【讨论】:

  • @Andrew-Weir 一般来说,我会同意。但是我的问题是在服务器端检测的方法之后,而不是下一阶段
  • @Peter Bridger:我不太确定您所说的“服务器端检测方法”是什么意思。您一定可以访问浏览器的详细信息。不是 BrowserCapabilities 还是 HttpBrowserCapabilities?我是一名 PHP 人,不幸的是我在 C# 领域的专业知识很浅,但我希望这能提供一些见解。
  • @Andrew-Weir 我以前使用 .net 进行移动检测的经验参差不齐。一位开发者朋友使用了一个 Codeplex 插件,该插件有所帮助,但这导致了奇怪的错误!
  • android默认浏览器包含Linux,没有android,在android ver 4.4上试过
【解决方案2】:

我认为最好的解决方案是尝试字符串

Request.ServerVariables["HTTP_USER_AGENT"]

到目前为止,这将为 android 设备返回 android 一词。 Windows 很容易被检测到。 有人帮我拿其他水果。

查看更详细的解决方案 http://www.codeproject.com/Articles/34422/Detecting-a-mobile-browser-in-ASP-NET

【讨论】:

  • 也可以使用:Request.Headers["User-Agent"]
  • 为什么不简单地Request.UserAgent
【解决方案3】:

这是一个 ASP.NET 扩展(显然,我没有使用它)为您完成所有这些工作:)

http://51degrees.codeplex.com/

【讨论】:

    【解决方案4】:

    IsMobileDevice 在我的 Android 手机上没有给出正确的响应。 这是我使用的代码。

    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
    
    
    protected void  TextBox1_TextChanged(object sender, EventArgs e)
    {
    
    }
    
    protected void  Button1_Click(object sender, EventArgs e)
    {
        System.Web.HttpBrowserCapabilities browser = Request.Browser;
        string s = "Browser Capabilities\n"
            + "Type = " + browser.Type + "\n"
            + "Name = " + browser.Browser + "\n"
            + "Version = " + browser.Version + "\n"
            + "Major Version = " + browser.MajorVersion + "\n"
            + "Minor Version = " + browser.MinorVersion + "\n"
            + "Platform = " + browser.Platform + "\n"
            + " Is MobileDevice ? " + browser.IsMobileDevice + "\n"
            + " screen Height " + browser.ScreenCharactersHeight + "\n"
            + " screen width " + browser.ScreenCharactersWidth + "\n"
            + "Is Beta = " + browser.Beta + "\n"
            + "Is Crawler = " + browser.Crawler + "\n"
            + "Is AOL = " + browser.AOL + "\n"
            + "Is Win16 = " + browser.Win16 + "\n"
            + "Is Win32 = " + browser.Win32 + "\n"
            + "Supports Frames = " + browser.Frames + "\n"
            + "Supports Tables = " + browser.Tables + "\n"
            + "Supports Cookies = " + browser.Cookies + "\n"
            + "Supports VBScript = " + browser.VBScript + "\n"
            + "Supports JavaScript = " +
                browser.EcmaScriptVersion.ToString() + "\n"
            + "Supports Java Applets = " + browser.JavaApplets + "\n"
            + "Supports ActiveX Controls = " + browser.ActiveXControls
                  + "\n"
            + "Supports JavaScript Version = " +
                browser["JavaScriptVersion"] + "\n";
    
        TextBox1.Text = s;
    }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
    
            <asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged" 
                Width="955px" Rows="22" TextMode="MultiLine"></asp:TextBox>
    
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                Text="Find browser" Font-Size="Large" Width="145px" />
    
        </div>
        </form>
    </body>
    </html>
    

    您可以尝试以下代码 www.abcd.com.au/browser.aspx 使用您的手机或其他设备。

    【讨论】:

      猜你喜欢
      • 2017-11-02
      • 2017-01-31
      • 2023-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多