2016-05-03 5 views
1

Gibt es eine Möglichkeit, über C# die iOS- und Android-WebView-Komponenten anzufragen, um die Desktop-Sites anzufordern?Xamarin WebView-Anfrage Desktop-Site

+3

Für iOS: http://stackoverflow.com/questions/32764728/request-desktop-sites-using-wkwebview-in-ios –

+4

Für Android: http://stackoverflow.com/questions/8309796/want-to -load-desktop-version-in-mein-webview-using-uastring –

+0

Danke Sven-Michael. Neu bei Xamarin.forms hier. Wie würde ich diese Funktionen in den .iOS- bzw. .Android-Versionen der App aufrufen? –

Antwort

7

Sie müssen dies für jede Plattform tun

Android

In Android müssen Sie einen benutzerdefinierten Renderer implementieren. Fügen Sie diese in Ihrem Android-Code:

// 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 Forms UIWebView verwenden, so dass Sie

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")); 

einige, wo in Ihrem Startcode verlangen. Z.B. in FinishedLaunching von Ihrem AppDelegate.

1

Legen Sie die User-Agent-Zeichenfolge entsprechend fest. Es gibt keine Möglichkeit, dies direkt in Xamarin Forms zu tun, Sie müssten dafür einen custom renderer schreiben.

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;