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



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

它确实有效,但只是一开始,后续的 Web 请求没有用户代理。

我在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())));
        }
    }

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

最新更新