Xamarin.Forms WebView、WKWebViewConfiguration 和发送 "Mobile" Headers

Xamarin.Forms WebView, WKWebViewConfiguration, and Sending "Mobile" Headers

我要回到 Xamarin.Forms,我发现了 iOS 13 Safari 在 iPad 上的一个新行为,称为“Desktop-Class 浏览”。这里有详细介绍:

https://developer.apple.com/videos/play/wwdc2019/203

我的问题是我需要我的 Web 应用程序能够检测是正常的 Web 浏览器正在查看它还是正在被 Xamarin.Forms.WebView 查看。在我的 Web 应用程序中,我曾经能够检测到带有 user-agent 字符串或 X-Requested-With header 的 Web 视图。但是,如果我的 Web 视图是 运行 on an iPad on iOS 13,它将进入桌面模式,这会产生一个桌面 Safari 用户代理 no X-Requested-With header,我无法再检测到它是 Web 视图。上述视频中的 2:56 引用了这一点。

在本机 iOS 应用程序中,我显然可以使用 WKWebViewConfiguration 来控制这些 desktop-like 功能:

https://developer.apple.com/documentation/webkit/wkwebviewconfiguration

我认为这在我第一个 link 的视频 9:01 处得到了演示。

如何将 WKWebViewConfiguration 与 Xamarin.Forms 一起使用?我看到 WebKit.WKWebViewConfiguration class,但如何将它与 Xamarin.Forms.WebView 一起使用?

除非您按照 this article 中的步骤操作,否则您的应用使用的是 UIWebView 而不是 WKWebView

有几种方法可以编辑 WKWebViewConfiguration:

  • 您可以使用“Custom Renderer" to implement your own WKWebView as shown in this Official Xamarin Forms example,并在那里编辑 WKWebViewConfiguration。
  • 我还没有尝试过的另一种可能方法 - 您还可以使用步骤 mentioned here 在表单中实现 WKWebView。然后只需编辑 属性.