ios cordova 原生與js通信原理

 

 

在ios中,cordova的CDVViewController繼承了viewController,每個h5的頁面,都對應一個CDVVIewController,ios

裏面都有一個webview,是ios中專門顯示h5頁面的view.web

h5和原生端的交互,主要是經過插件的形式實現,原生這邊寫一個類繼承CDVPlugin,而後實現方法,js那邊封裝好每一個接口的方法,函數

最終經過調用cordova.js裏的exec,傳入服務類名,方法名,以及回調函數及參數等進行調用。lua

它的通信原理是:有兩種方法url

一、經過iframe,cordova.exec函數裏經過向Html插入一個不可見的iframe,從而會向UIWebView請求加載一個特殊的URL,插件

  url裏包括了plugin插件的類名,方法名。cordova

因爲請求了url,這時會觸發UIWeibviewDegate的shouldStartLoadWithRequest繼承

這裏會進入原生則,原生經過request獲取類名和方法名進行處理接口

二、經過XHR,cordova.exec經過發起一個xhr請求,這時候就會被NSURLProtocol攔截ip

原生的canInitWithRequest就會被調用,從而進入到原生

 

原生調用js的方法,是直接經過stringByEvaluatingJavaScriptFromString直接調用js方法

相關文章
相關標籤/搜索