【问题标题】:how to detect a mobile phone in a web application [closed]如何在 Web 应用程序中检测手机 [关闭]
【发布时间】:2011-01-02 15:13:03
【问题描述】:

如果是 Web 应用程序,您如何判断访问者正在通过手机查看?

是否也可以像黑莓和 iPhone 一样找出品牌/型号?

【问题讨论】:

    标签: asp.net mobile


    【解决方案1】:

    您可以查看他们的User-Agent 字符串。

    【讨论】:

    • 用户代理是否会按照问题中的要求填充那些特定的“设备信息”?
    【解决方案2】:

    Scott Hanselman did a podcast 在 Microsoft made available on Codeplex 的模块设备数据库上。它是您放入 ASP.NET(2.0+ 版)网站的 .browser 文件,它可以帮助框架更紧密地定义 Request.Browser 属性。您应该能够从那里获得很多您需要的信息。

    但是,该项目不再受支持,当您处理用户代理检测时,拥有最新的资源非常重要。您可能应该使用类似的项目,例如 51degrees.mobiWURFL

    即使没有,至少你可以检查Request.Browser.IsMobileDevice

    【讨论】:

    • MDBF 现在已经很老了。例如;它不包含平板电脑或 4G/LTE 设备。你可以试试 NuGet (nuget.org/packages?q=51degrees) 的 51Degrees.mobi。这是零配置的一键安装。
    【解决方案3】:

    您可以检查用户代理字符串。在 JavaScript 中,这真的很简单,它只是导航器对象的一个​​属性。

    var useragent = navigator.userAgent;
    

    您可以在 JS 中检查设备是否为 iPhone 或 Blackberry 之类的

    var isIphone = !!agent.match(/iPhone/i),
        isBlackberry = !!agent.match(/blackberry/i);
    

    如果 isIphone 为 true,则您正在从 Iphone 访问该站点,如果 isBlackBerry 您正在从 Blackberry 访问该站点。

    您可以使用 firefox 的“UserAgent Switcher”插件来测试。

    【讨论】:

      【解决方案4】:

      Session_Start 中使用httpRequest.Browser.IsMobileDevice

      void Session_Start(object sender, EventArgs e)
      {
          // Redirect mobile users to the mobile home page
          HttpRequest httpRequest = HttpContext.Current.Request;
          if (httpRequest.Browser.IsMobileDevice)
          {
              string path = httpRequest.Url.PathAndQuery;
              bool isOnMobilePage = path.StartsWith("/Mobile/", 
                                     StringComparison.OrdinalIgnoreCase);
              if (!isOnMobilePage)
              {
                  string redirectTo = "~/Mobile/";
      
                  HttpContext.Current.Response.Redirect(redirectTo);
              }
          }
      }
      

      【讨论】:

        【解决方案5】:

        请检查一下。对我来说工作得很好!

        http://detectmobilebrowsers.com/

        【讨论】:

        • 多一点信息会很好。
        【解决方案6】:

        【讨论】:

          【解决方案7】:

          以下是来自类似问题的一些信息:

          Auto detect mobile browser (via user-agent?)

          它涉及读取用户代理标头。其他问题的答案包括此脚本的链接。

          这是另一个有用的讨论:

          Standard way to detect mobile browsers in a web application based on the http request

          【讨论】:

            【解决方案8】:

            如前所述 - 用户代理

            但是,你真的是要问“是手机吗”?还是你真的是别的意思?

            如今,界限越来越模糊。我花了 99 美元从 eBay 买了一个漂亮的 7 英寸屏幕 Android 平板电脑。那是手机吗?是 6 英寸屏幕的迷你上网本吗?是类似于 Kidnle 的设备吗?

            我只是想知道您为什么想知道它是否是手机……屏幕尺寸?处理能力?别的东西?

            您可能确实是指手机,但如果不是,请改写,我们可以提供进一步帮助。

            【讨论】:

              猜你喜欢
              • 2016-01-31
              • 2011-10-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-05-10
              • 1970-01-01
              相关资源
              最近更新 更多