如何在Xamarin.Forms iOS应用程序中为UiWebView设置用户代理

时间:2016-05-26 16:14:27

标签: uiwebview xamarin.ios xamarin.forms

我目前正在我的Xamarin.Forms应用程序的iOS项目中的HybridWebViewRenderer中设置UIWebView的用户代理。

它确实有效,但只是在开始时,后续的Web请求没有UserAgent。

我在HybridWebViewRenderer中的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())));

        }
    }

1 个答案:

答案 0 :(得分:0)

我使用完全相同的代码,但我在构造函数而不是OnElementChanged事件中执行此操作。