最近由于公司需求,需要與h5進(jìn)行交互舰绘,所以做了相關(guān)工作虱而,寫下這篇文章筏餐,讓以后有此需求的小伙伴能快速上手,免踩坑
1.首先我創(chuàng)建了一個管理類JSandOCManager 牡拇,在.h文件? 生成一個代理繼承JSExport魁瞪,在此代理中注入你和h5前端約定好的方法
2.給JSandOCManager加上第一步的代理 代碼如下
3.在.m文件里實現(xiàn)方法 可以用代理的方法將響應(yīng)的結(jié)果傳送出去 也可以用block的方式 例如
4.回到你的控制器 在webviewDidFinishLoad 方法里注入你的manager
5.響應(yīng)代理方法 在方法里做你想要干的事情 例如 彈出菊花 在此注意 如果是UI處理 要回到主線程去處理UI
6.如果native 調(diào)用JS 可以在代理響應(yīng)方法里調(diào)用JS 也可以回調(diào)manager 調(diào)用JS
7.到達(dá)這一步 基本工作已經(jīng)完成 不出意外地話 你就可以JS Native 相互調(diào)用了? ?H5前端的調(diào)用方式為window.YiZhenJSBridge.showLoading()的方式
由于UIWebView 還存在內(nèi)存問題? 可以webviewDidFinishLoad 方法里添加如下幾行代碼
//? ? [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"]
//? ? [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];
//? ? [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];
//? ? [[NSUserDefaults standardUserDefaults] synchronize];
當(dāng)然也可以 在delloc 方法里加載一個空鏈接