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 的 javascript 调用返回 nil
WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用