swift之与h5之间的交互(二)
很多小伙伴表示有场景需要给h5端进行交互方法相互调用传值,今天就给大家简单的介绍下:
首先咋们iOS端先搭建好自己的环境,不废话上代码
一.h5调用iOS端
1.先搭建wkwebview,布局的代码省略,遵守协议WKScriptMessageHandler
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | let webView : WKWebView = { let preferences = WKPreferences () preferences . javaScriptEnabled = true let config = WKWebViewConfiguration () let controller = WKUserContentController () config . userContentController = controller config . preferences = preferences let webView = WKWebView ( frame : . zero , configuration : config ) webView . scrollView . showsVerticalScrollIndicator = false webView . scrollView . showsHorizontalScrollIndicator = false webView . scrollView . bounces = false webView . navigationDelegate = self if # available ( iOS 11.0 , *) { webView . scrollView . contentInsetAdjustmentBehavior = . never } return webView }() |
2.提前与h5商定好字段,然后设置监听,这里以"toBackApp"为例,分别放在viewWillAppear和viewWillDisappear方法里
1 2 | //返回 webView . configuration . userContentController . add ( self , name : "toBackApp" ) |
1 | webView . configuration . userContentController . removeScriptMessageHandler ( forName : "toBackApp" ) |
3.监听方法调用及解析
1 2 3 4 5 6 7 8 9 10 11 12 13 | //MARK: 接收方法 func userContentController ( _ userContentController : WKUserContentController , didReceive message : WKScriptMessage ) { switch message . name { case "toBackApp" : if webView . canGoBack { webView . goBack () } else { self . navigationController ?. popViewController () } default : break } }< br > //如果是h5传参过来则用message.body去接收,然后再去解析 |
二.iOS端调用h5
1 2 3 4 5 6 7 8 | //MARK: js调用方法,如果涉及传参则在refreshH5('传参数据') @objc func didBecomeActiveNotificationClick () { let inputJS = "JavaCallJs.refreshH5(\"\")" webView . evaluateJavaScript ( inputJS ) { ( response , error ) in print ( inputJS + " \( response . debugDescription ) " ) } }< br > //注意error是否为nil,不为nil则调用失败,需要与前端联调 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY