WKWebView 可以调用主应用程序中的函数并返回值吗?

Posted

技术标签:

【中文标题】WKWebView 可以调用主应用程序中的函数并返回值吗?【英文标题】:Can a WKWebView call a function in the main app and get a value back? 【发布时间】:2019-09-18 20:50:14 【问题描述】:

我目前正在编写一个网页,该网页旨在在 ios 上的 WKWebView 或 android 上的 WebView 内运行。在 Android 上,WebView 可以调用执行本机应用程序代码并将值返回给 WebView 的函数。是否可以在 iOS 上做同样的事情?我可以调用原生 iOS 函数并以某种方式从它返回一个值吗?

【问题讨论】:

停止。 UIWebView 已被弃用多年。使用 WKWebView。是的,有一种方法可以从 html/javascript 调用到您的应用程序中。 @matt 改为询问 WKWebView。 (我不是 iOS 工程师,所以我不知道他们使用的是哪个 WebView。)另外,问题中最重要的部分是这种通信是否是双向的。 【参考方案1】:

当然可以,但需要大量的准备工作。 几年前我做了这个https://github.com/ddaddy/DJJavaInsertion,当时我需要能够通过更改网页上的JavaScript 来控制应用程序的工作方式。它使用UIWebView,但您应该能够修改它以使用WKWebView

它的工作方式是加载您的网页并启动初始 js 函数。由于您的 js 需要调用 Obj-C 方法,因此它会对 webview 委托捕获并执行功能的特殊制定的 url 进行 iframe 调用。

我用它来呈现原生警报、请求数据输入,甚至执行相当复杂的网络请求。

我怀疑这对你来说会是一个下降,但可能会告诉你如何去做。

【讨论】:

以上是关于WKWebView 可以调用主应用程序中的函数并返回值吗?的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView 在触发原生代码之前等待 DOM 渲染

WKwebview,js调用用Swift函数播放声音

WKWebview 的 javascript 调用返回 nil

WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用

添加 WKWebView 后 IONIC 中的 CORS API 调用问题

UIWebview/WKWebView javascript调用处理两个返回值?