混合开发native和h5交互之JSContext(原生)

一.JSContext(方法1)
1.以前模式,实现native和web 之间交互,以前用的是第三方Hybird的框架
缺点:
a.每次都要集成Hybrid framework到工程,集成包会越来越大

b.第三方引入容易引入冲突

2.接下来准备采用的模式 用苹果自带API JSContext控件 实现native和web 之间交互

优点:简单通用,不需要集成第三方库
缺点:该API最低版本支持ios7.0
补充:由于所有webview都可以调用JSContext,所以iOS暂时不需要跟android那样封装一个webView

3JSContext如何使用
第一步引入库,同时在需要使用页面的地方引入头文件


混合开发native和h5交互之JSContext(原生)_第1张图片
Paste_Image.png

第二步在UIWebView的回调接口 捕获当前web view页面的JSConext(js上下文环境)
[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

混合开发native和h5交互之JSContext(原生)_第2张图片
Paste_Image.png

第三步,根据捕获的 JSContext对象来实现native和Web之间的交互
a,场景1iOS调用js

混合开发native和h5交互之JSContext(原生)_第3张图片
Paste_Image.png

运行效果图


混合开发native和h5交互之JSContext(原生)_第4张图片
Paste_Image.png

b.场景2 js调用iOS (用的是block语句)

混合开发native和h5交互之JSContext(原生)_第5张图片
Paste_Image.png

运行效果图
混合开发native和h5交互之JSContext(原生)_第6张图片
Paste_Image.png

第四步 网页js函数参数约定
网页函数 forward(String objJson)
其中objJson 是json格式 解析出来是一个 NSDictionary,客户端根据获取他来实现业务跳转 基本上第一个是type区分业务,之后的参数就是对应type需要的参数
混合开发native和h5交互之JSContext(原生)_第7张图片
Paste_Image.png

该argDic 目前有如下类型,以后有需要还可以继续扩展:
type(跳转类型),url(跳转连接),subtype(子类类型), title(名字),等

混合开发native和h5交互之JSContext(原生)_第8张图片
Paste_Image.png

如果您发现本文对你有所帮助,如果您认为其他人也可能受益,请把它分享出去。

你可能感兴趣的:(混合开发native和h5交互之JSContext(原生))