C# 如何在WindowPhone 8.0和8.1用户代理中获取用户代理
我试图得到一个窗口电话的用户代理,我用这种方式得到它C# 如何在WindowPhone 8.0和8.1用户代理中获取用户代理,c#,wpf,windows,windows-phone,C#,Wpf,Windows,Windows Phone,我试图得到一个窗口电话的用户代理,我用这种方式得到它 private const string Html = @" <html> <head> <script language=""javascript"" type=""text/javascript""> function notifyUA() { window.external.notify(navigator.userAgen
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;windowsphone8.0;三叉戟/6.0;IEMobile/10.0;臂触摸诺基亚;卢米亚630
但是从whatsmyuseragent.com
Mozilla/5.0 Windows Phone 8.1;臂三叉戟/7.0;触摸rv:11.0;IEMobile/11.0;诺基亚;卢米亚630像格奇科
请帮助我…在我们的门户中,我们通过UAS检测呼叫设备。 我检测到WP 8.1用户代理字符串存在一些问题。 对于带有IE的WP,设置为通过互联网移动,我收到有意义的UAS: Mozilla/5.0手机;windowsphone8.1;安卓4.0;臂三叉戟/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设置为桌面或通过内部网调用门户,我将收到: Mozilla/5.0 Windows NT 6.2;臂三叉戟/7.0;触摸rv:11.0; wp桌面;Lumia930像壁虎 所以。。结果是,我们的门户将移动页面显示给iOS,而不是移动页面显示给WP。 解决方法是在查询iPhone之前先查询Windows Phone的UAS。
当MS试图通过这种方式被检测为移动设备时,如果一个页面只查询iOS和Android设备,那有什么不好。我怀疑用户代理被报告为与Mozilla/5.0兼容;MSIE 10.0;windowsphone8.0;三叉戟/6.0;IEMobile/10.0;臂触摸诺基亚;Lumia 630具有向后兼容性,但whatsmyuseragent.com足够智能,可以找出正确的版本。你能用Fiddler验证哪个用户代理版本被发送到网站吗?我有点类似的问题,我的WP8.1将UA报告为WP8.0,所以我无法区分它们。你有办法吗?