在應(yīng)用中,有很多內(nèi)容是利用iOS原生的webView承載的H5去顯示的。所以,不可避免的會利用到OC與JS的交互。由于之前沒有接觸到這部分的內(nèi)容,一直對這個交互的使用場景很模糊,通過近期的需求開發(fā)理解了一下這部分的交互使用。以下是我的見解與大家分享一下,也可以多多指教,共同學(xué)習(xí):
一.主要使用場景:
1.獲取綁定JS方法的返回值;
2.在特定操作/時刻觸發(fā)JS方法;
3.將JS調(diào)用OC的結(jié)果返回給JS;
二.OC調(diào)用JS
在大部分交互中,是利用OC調(diào)用JS,也會為客戶端的開發(fā)人員節(jié)約很多成本。目前在iOS8之后webView主要使用的是WKWebView,它相比于UIWebView,具有加載速度更快,占用內(nèi)存少,支持了更多的HTML5特性的等特點(diǎn)。
我們可以利用- evaluateJavaScript:completionHandler:方法,調(diào)用JS的方法獲取到count,在回調(diào)中得到返回值。

也可以利用該方法傳值給JS
三.JS調(diào)用OC
相當(dāng)于提前埋好點(diǎn),等待注入的JS方法返回結(jié)果進(jìn)行相應(yīng)的操作。通過WKScriptMessageHandler的代理方法接收到相應(yīng)的WKScriptMessage并進(jìn)行處理。
1.在創(chuàng)建配置webView的時候注入JS

2.利用WKScriptMessageHandler的代理方法接收WKScriptMessage進(jìn)行相應(yīng)操作

總結(jié):無論前端與客戶端的交互是誰調(diào)用誰,其實(shí)都是可以的,看業(yè)務(wù)的需求、交互而定。所以只需認(rèn)真分析交互的具體內(nèi)容是為了實(shí)現(xiàn)什么效果,如何配合即可。