1. 程式人生 > >Native與js互動方式

Native與js互動方式

最近需要做Native同js的互動,所以就特意去查找了寫資料學習了一下Native同js互動的相關知識。對幾種常用的方式做了如下的整理和分析:

一、 Native監聽js的alert、confirm、prompt方法

Android端、IOS端均在監聽回撥中處理alert、confirm或者prompt,解析出含義預定好的標識後按邏輯做出處理。
優點:技術難度低,實現容易。
缺點:需要Native端和js前端兩端均新增邏輯;僅支援js呼叫原生方法,無法獲取返回值。

二、 Native通過攔截url請求,獲取引數及處理對應邏輯

Android端和IOS端在url請求回撥中去攔截處理特定url,並獲取相關引數,做相關的邏輯處理。
優點:開發難度低,實現簡單;不需要js端在特殊處理,只需要Native端定義要攔截處理的url即可。
缺點:同樣只是js呼叫Native單向,不支援返回值;

三、 Native通過webView設定代理物件實現互動

Native端通過給WebView設定一個代理物件,然後js通過物件直接呼叫Native方法;
優點:擴充套件性更強,且能為js提供返回值;維護修改成本低
缺點:js需要對Native端在單獨適配工作,增加邏輯方法;仍然是單向呼叫,Native呼叫js方法需要通過其他方式呼叫,一般不能返回數值。

四、 Native通過JsBridge來和js進行互動

通過封裝的jsBridge來實現js和Native之間的呼叫和資料傳遞。
優點:功能強大,雙向呼叫均可以在框架內完成;雙向呼叫都可以獲得返回值;並且可以為方法新增非同步的回撥,能夠實現更為複雜的互動和需求。
缺點:需要Native端和Js均做開發,而且IOS、Android和js需要分別單獨去學習JSBridge知識。開發週期和學習成本相對較高,開發難度相對較大,不太適合在輕量需求下使用。