【问题标题】:Xamarin.Forms WebView, WKWebViewConfiguration, and Sending "Mobile" HeadersXamarin.Forms WebView、WKWebViewConfiguration 和发送“移动”标头
【发布时间】:2020-11-07 15:29:38
【问题描述】:

我正在重新使用 Xamarin.Forms,并且我发现了 iPad 上 iOS 13 Safari 的一种新行为,称为“桌面级浏览”。这里有详细介绍:

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

对我来说,问题是我需要我的 Web 应用程序能够检测普通 Web 浏览器是否正在查看它,或者它是否正被 Xamarin.Forms.WebView 查看。从我的 Web 应用程序中,我曾经能够使用用户代理字符串或 X-Requested-With 标头检测 Web 视图。但是,如果我的 Web 视图在 iOS 13 上的 iPad 上运行,它将进入桌面模式,这会产生一个桌面 Safari 用户代理,没有 X-Requested-With 标头,我无法再检测到它是一个 Web 视图。上述视频中的 2:56 引用了这一点。

在原生 iOS 应用程序中,我显然可以使用WKWebViewConfiguration 来控制这些类似桌面的功能:

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

我认为这在我的第一个链接中的视频中的 9:01 进行了演示。

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

【问题讨论】:

  • 您好,如果回复有帮助,请不要忘记接受它作为答案(点击此答案左上角的✔),它将帮助其他有类似问题的人。 :-)

标签: ios xamarin ipad xamarin.ios wkwebview


【解决方案1】:

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

有几种方法可以编辑WKWebViewConfiguration

  • 您可以使用“Custom Renderer”来实现您自己的 WKWebView,如 Official Xamarin Forms example 所示,并在那里编辑 WKWebViewConfiguration。
  • 我还没有尝试过的另一种可能的方法 - 您还可以使用步骤mentioned here 在表单中实现 WKWebView。然后只需编辑该属性。

【讨论】:

  • 我必须制作一个自定义渲染器。我已经意识到自定义渲染器的可能性,并希望找到一种不同的方式。
  • 啊。您是否尝试过我上面提到的第二个选项?
  • 鉴于我的程序结构,我认为该选项是不可能的。但我确实考虑过。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 2018-02-27
相关资源
最近更新 更多