2016-05-03 9 views
1

iOSとAndroid WebViewコンポーネントでデスクトップサイトをリクエストする方法はありますか?Xamarin WebViewリクエストデスクトップサイト

+3

iOSの場合:http://stackoverflow.com/questions/32764728/request-desktop-sites-using-wkwebview-in-ios –

+4

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のコードにこれを追加します。

// 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フォームでこれを直接行う方法はありません。そのためには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"; 

アンドロイド

あなたはプラットフォームごとにこれを実行する必要が
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;