2016-05-03 34 views
1

有沒有辦法通過C#請求iOS和Android WebView組件來請求桌面站點?Xamarin WebView請求桌面站點

+3

對於iOS:http://stackoverflow.com/questions/32764728/request-desktop-sites-using-wkwebview-in-ios –

+4

For Android:http://stackoverflow.com/questions/8309796/want-to -load-desktop-version-in-my-webview-using-uastring –

+0

謝謝Sven-Michael。這裏是Xamarin.forms的新功能。我將如何分別在應用程序的.iOS和.Android版本中調用這些函數? –

回答

7

你需要做的每個平臺

Android

在Android中,您必須實現自定義渲染器。這種添加到您的Android代碼:

// this line directly ubleow usings, before namespace declaration 
[assembly:ExportRenderer(typeof(WebView), typeof(DesktopWebViewRenderer))] 

// this in your namespace 
public class DesktopWebViewRenderer : WebViewRenderer 
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) 
    { 
     base.OnElementChanged(e); 

     Control.Settings.UserAgentString = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0"; 
    } 
} 

的iOS

Xamarin形式是利用UIWebView的,所以你必須調用

NSUserDefaults.StandardUserDefaults.RegisterDefaults(new NSDictionary("UserAgent", 
      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A")); 

一些地方在你的啓動代碼。例如。在您的AppDelegateFinishedLaunching中。

1

正確設置用戶代理字符串。在Xamarin Forms中無法直接執行此操作,因此您需要編寫一個custom renderer來完成此操作。

的iOS UIWebView的

NSUserDefaults.StandardUserDefaults.RegisterDefaults(["UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"]); 

iOS9 + WKWebView

web.CustomUserAgent = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36"; 

的Android

string agent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/20100101 Firefox/4.0"; 
web.Settings.UserAgentString = agent;