iOS和html交互-UIWebView
本文最后更新于:2 年前
UIWebView是苹果公司自iOS 2提供的加载html页面的容器,一直到现在还可以继续使用,早期web页面和手机容器并没有太多的交互,在iOS 7发布了JavaScriptCore框架以及html 5成熟之后,iOS的UIWebView对html的加载能力和交互能力得到了显著的提升。
一、web页面调用iOS原生提供的方法
方法一、拦截url
前端人员需要和iOS开发约定好参数,例如约定jsAction://openScan为打开手机摄像头进行扫码,前端通过页面重定向的方式,加载约定好的参数,iOS开发通过代理方法中拦截,进行原生的逻辑调用,如果需要传递参数给原生,那么需要拼接在约定字符串后面,约定格式进行解析
1 | |
方法二、iOS7之后提供的JavaScriptCore
在工程中引入JavaScriptCore的框架,在UIWebView的代理方法中通过指定的API即可与web页面进行交互,如下
1 | |
1 | |
其中documentView.webView.mainFrame.javaScriptContext为获取JSContext类的固定key值,openScan为约定好的方法名称,参数可以通过指定的方法获取,这里的参数获取顺序和web页面传递参数的顺序是一致的,原生在JSContext的回调里面return参数回传给web
二、原生调用web页面的方法
首先,是通过UIWebView的loadRequest方法来加载页面,可以在url后面拼接参数给web页面获取,页面加载完成后可以使用stringByEvaluatingJavaScriptFromString方法来直接调用web页面中的方法
1 | |
1 | |
以上介绍的交互方式在安卓上同样有相应的方法,感兴趣的可以自己查询下。