2014-12-23 26 views
1

我試圖讓我使用這種方式來得到它如何讓窗口電話用戶代理8.0和8.1的用戶代理

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,但在通過代碼我得到UA WP 8.1

情況下

的Mozilla/5.0(兼容不正確; MSIE 10.0; Windows Phone的8.0;三叉戟/ 6.0; IEMobile/10.0; ARM;觸摸; NOKIA ; Lumia 630)

但是來自whatsmyuseragent.com

Mozilla/5.0(Windows Phone 8.1;臂;三叉戟/ 7.0;觸摸; RV:11.0; IEMobile/11.0;諾基亞; Lumia 630)像Gechko 請幫我...

+0

爲了向後兼容,我懷疑用戶代理被報告爲'Mozilla/5.0(compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 630)',但whatsmyuseragent .com很聰明,能夠找出正確的版本。您可以使用Fiddler驗證哪個用戶代理版本發送到網站? –

+0

我有同樣的問題,我的WP8.1報告UA爲WP8.0,所以我不能告訴他們分開。你有什麼辦法做到這一點? – Mtz

回答

0

在我們的門戶網站,我們通過UAS檢測呼叫設備。 我檢測到WP 8.1用戶代理字符串存在一些問題。
對於IE WP,集移動在互聯網,我收到了 「有意義」 的UAS:

的Mozilla/5.0(手機,Windows手機8.1,Android 4.0的; ARM;三叉戟/ 7.0; 觸摸; RV:11.0; IEMobile/11.0; NOKIA;的Lumia 930)如iPhone OS 7_0_3 的Mac OS X爲AppleWebKit/537(KHTML,例如Gecko)移動Safari/537

由此,如果IE移動被設定爲「桌面」或門戶通過內聯網呼叫,我收到:

Mozilla/5.0(Windows NT 6.2;臂;三叉戟/ 7.0;觸摸; RV:11.0; WPDesktop; Lumia 930)像壁虎

所以..效果是,我們的門戶已經顯示移動頁面到iOS,而不是移動頁面到WP。
解決方法是查詢UAS的「Windows Phone」,然後在之前查詢iPhone。
這似乎是MS試圖通過這種方式被檢測爲移動設備(如果一個頁面只查詢iOS和Android設備),那麼不好。