Мне удалось отредактировать пользовательский агент по умолчанию, определив пользовательский рендер, который наследует от WkWebView. WkWebView имеет свойство с именем CustomUserAgent, которое как раз то, что мне нужно.
Итак, это пользовательский рендерер:
using Foundation;
using SuperWrapper.CustomRenderers;
using SuperWrapper.macOS.CustomRenderers;
using WebKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.MacOS;
[assembly: ExportRenderer (typeof(SuperWebView), typeof(SuperWebViewRenderer))]
namespace SuperWrapper.macOS.CustomRenderers
{
public class SuperWebViewRenderer : ViewRenderer<SuperWebView, WKWebView>
{
private WKWebView _wkWebView;
protected override void OnElementChanged(ElementChangedEventArgs<SuperWebView> e)
{
base.OnElementChanged(e);
if (this.Control == null)
{
var config = new WKWebViewConfiguration();
this._wkWebView = new WKWebView(this.Frame, config);
this.SetNativeControl(this._wkWebView);
}
if (e.NewElement != null)
{
var source = (UrlWebViewSource) e.NewElement.Source;
if(source != null)
this.Control.LoadRequest(new NSUrlRequest(new NSUrl(source.Url)));
this.Control.CustomUserAgent = e.NewElement.UserAgent;
}
}
}
}
, а это пользовательский класс со свойством «переопределения»:
public class SuperWebView : WebView
{
public static readonly BindableProperty UserAgentProperty = BindableProperty.Create(
propertyName: "UserAgent",
returnType: typeof(string),
declaringType: typeof(SuperWebView),
defaultValue: default(string));
public string UserAgent
{
get { return (string) GetValue(UserAgentProperty); }
set { SetValue(UserAgentProperty, value); }
}
}
Для моих целей я нашел, какой пользовательский агент был в Safari, и вставьте его в свойство UserAgent.
<customRenderers:SuperWebView
x:Name="MainWebView"
Source="https://web.whatsapp.com/"
UserAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36"
Grid.Column="1"/>