我目前正在我的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())));
}
}
答案 0 :(得分:0)
我使用完全相同的代码,但我在构造函数而不是OnElementChanged事件中执行此操作。