在原生 iOS 应用程序中集成响应式 html 网页并使用 Apache Cordova 进行通信
Posted
技术标签:
【中文标题】在原生 iOS 应用程序中集成响应式 html 网页并使用 Apache Cordova 进行通信【英文标题】:Integrating responsive html webpages in native iOS app and communicate using Apache Cordova 【发布时间】:2019-07-19 10:30:06 【问题描述】:我有一个 swift 3.0 内置的原生应用程序。现在需要在我们的应用程序中加载一些响应式网页。加载网页后,如果对这些页面采取任何操作,我们的原生代码需要进行一些更改用于显示一些要求。听说 Apache Cordova 实现了这一点。但没有得到适当的教程来理解这个过程。请帮助
【问题讨论】:
【参考方案1】:如果您的方法有些有限且已知,您可以使用 WKWebView 的消息处理程序回调从 javascript 函数中调用。然后执行一些本机代码,您可以将基本数据发送到这些代码。
为此你需要完成什么:
let contentController = WKUserContentController()
contentController.add(self, name: "nativeCallbackios")
let config = WKWebViewConfiguration()
config.userContentController = contentController
let webView = WKWebView(frame: .zero, configuration: config)
无论什么是“self”,都需要像这样实现 WKScriptMessageHandler:
extension ViewController: WKScriptMessageHandler
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
if message.name == "nativeCallbackIOS"
// do your native stuff here
在您的网站 javascript 中,您会这样称呼它:
window.webkit.messageHandlers.nativeCallbackIOS.postMessage()
如果需要传递参数,则需要定义规范,因为 WKScriptMessageHandler 上的 message.body 是“Any”类型。一般来说,json 类型是一个聪明的主意,因为你可以使用 jsonserialization 或 codable(如果你升级你的 swift 版本,推荐)。
提示:上面示例中使用的语法是 swift 5,因此方法名称可能不同。
【讨论】:
以上是关于在原生 iOS 应用程序中集成响应式 html 网页并使用 Apache Cordova 进行通信的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 混合应用程序中集成 card.io sdk?