如何在window phone 8.0和8.1 User Agent中获取用户代理

时间:2014-12-23 11:30:09

标签: c# wpf windows windows-phone

我正在尝试使用这种方式获取窗口手机的用户代理

private const string Html =
        @"
    <html>
    <head>
    <script language=""javascript"" type=""text/javascript"">
        function notifyUA() {
           window.external.notify(navigator.userAgent);
        }
    </script>
    </head>`enter code here`
    <body onload=""notifyUA();""></body>
    </html>";

public static void GetUserAgent(Panel rootElement, Action<string> callback)
    {
        var browser = new Microsoft.Phone.Controls.WebBrowser();
        browser.IsScriptEnabled = true;
        browser.Visibility = Visibility.Collapsed;
        browser.Loaded += (sender, args) => browser.NavigateToString(Html);
        browser.ScriptNotify += (sender, args) =>
        {
            string userAgent = args.Value;
            rootElement.Children.Remove(browser);
            callback(userAgent);
        };
        rootElement.Children.Add(browser);
    }

这在WP 8.0的情况下工作正常,但在WP 8.1的情况下不正确

通过代码,我正在获得UA

Mozilla / 5.0(兼容; MSIE 10.0; Windows Phone 8.0; Trident / 6.0; IEMobile / 10.0; ARM; Touch;诺基亚; Lumia 630)

但是来自whatsmyuseragent.com

Mozilla / 5.0(Windows Phone 8.1; ARM; Trident / 7.0;触摸; rv:11.0; IEMobile / 11.0;诺基亚; Lumia 630),如Gechko 请帮帮我......

1 个答案:

答案 0 :(得分:0)

在我们的门户网站中,我们通过UAS检测呼叫设备。 我发现了 WP 8.1用户代理字符串的一些问题 对于使用IE的WP,通过互联网设置为移动,我会收到&#34;有意义的&#34; UAS:

  

Mozilla / 5.0(移动版; Windows Phone 8.1; Android 4.0; ARM; Trident / 7.0;   触摸; RV:11.0; IEMobile / 11.0;诺基亚; Lumia 930)喜欢iPhone OS 7_0_3   Mac OS X AppleWebKit / 537(KHTML,如Gecko)Mobile Safari / 537

因此,如果将IE mobile设置为&#34; Desktop&#34;或通过内联网呼叫门户网站,我收到:

  

Mozilla / 5.0(Windows NT 6.2; ARM; Trident / 7.0; Touch; rv:11.0;   WPDesktop; Lumia 930)喜欢Gecko

所以..效果是,我们的门户网站已经向iOS显示了移动页面,而不是移动页面到WP 解决方法是在UAS中查询&#34; Windows Phone&#34; 之前查询iPhone 似乎MS试图以这种方式被检测为移动设备(如果页面仅查询iOS和Android设备),那就不好了。