公司的項目需要承載h5頁面,技術選型選擇了Cordova框架。
雖然利用javascriptInterface可以調(diào)用原生能力,但是Cordova已經(jīng)實現(xiàn)了一套成熟的機制,并且提供插件機制,快速提供原生能力。所以除了部分注入對象,都使用Cordova插件。
使用了Cordova框架,就有了一大堆Cordova的 js文件。這些js 文件一般只會因為原生能力的變動而變動,所以都是對于版本迭代來說,Cordova的js文件都是靜態(tài)版本,所以可以靜態(tài)保存在本地,避免頁面加載過多文件;如果作為平臺方,也可以避免出現(xiàn)業(yè)務方的Cordova資源包版本問題。
攔截資源方法
在Android上,webview 依賴WebViewClient,當有資源請求時,會調(diào)用shouldInterceptRequest這個方法,我們也是在這里做攔截。如下面兩張圖,只要在與前端商量好地址的規(guī)則,攔截對應規(guī)則的資源,將地址 url 轉(zhuǎn)化成本地 path,生成對應WebResourceResponse就可以了,返回null則由瀏覽器自行處理。
生成資源方法
生成MimeType方法