2016-05-26 37 views
1

我目前在我的Xamarin.Forms應用程序的iOS項目中的我的HybridWebViewRenderer中設置了UIWebView的用戶代理。如何在Xamarin.Forms中爲UiWebView設置用戶代理iOS app

它可以工作,但僅在一開始,後續的Web請求才沒有UserAgent。

我在AutoWebViewRenderer中的OnElementChanged中設置UserAgent,我的理解是這將在WebView創建時調用一次。

public class HybridWebViewRenderer : ViewRenderer<HybridWebView, UIWebView>, IWKScriptMessageHandler 
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e) 
    { 
     base.OnElementChanged(e); 

     if (Control == null) 
     { 
      UIWebView agentWebView = new UIWebView(); 
      var userAgent = agentWebView.EvaluateJavascript("navigator.userAgent"); 
      userAgent += "MyApp"; 
      NSDictionary dictionary = NSDictionary.FromObjectAndKey(NSObject.FromObject(userAgent), NSObject.FromObject("UserAgent")); 
      NSUserDefaults.StandardUserDefaults.RegisterDefaults(dictionary); 
      agentWebView.ShouldStartLoad += HandleStartLoad; 
      base.SetNativeControl(agentWebView); 
      agentWebView.LoadRequest(new NSUrlRequest(new NSUrl(e.NewElement.Uri.ToString()))); 

     } 
    } 

回答

0

我使用完全相同的代碼,但我在構造函數而不是OnElementChanged事件中執行。

相關問題