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 |
|
以上介绍的交互方式在安卓上同样有相应的方法,感兴趣的可以自己查询下。