最近由于公司需求,需要与h5进行交互,所以做了相关工作,写下这篇文章,让以后有此需求的小伙伴能快速上手,免踩坑
1.首先我创建了一个管理类JSandOCManager ,在.h文件 生成一个代理继承JSExport,在此代理中注入你和h5前端约定好的方法

2.给JSandOCManager加上第一步的代理 代码如下

3.在.m文件里实现方法 可以用代理的方法将响应的结果传送出去 也可以用block的方式 例如

4.回到你的控制器 在webviewDidFinishLoad 方法里注入你的manager

5.响应代理方法 在方法里做你想要干的事情 例如 弹出菊花 在此注意 如果是UI处理 要回到主线程去处理UI

6.如果native 调用JS 可以在代理响应方法里调用JS 也可以回调manager 调用JS

7.到达这一步 基本工作已经完成 不出意外地话 你就可以JS Native 相互调用了 H5前端的调用方式为window.YiZhenJSBridge.showLoading()的方式
由于UIWebView 还存在内存问题 可以webviewDidFinishLoad 方法里添加如下几行代码
// [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"]
// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];
// [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];
// [[NSUserDefaults standardUserDefaults] synchronize];
当然也可以 在delloc 方法里加载一个空链接