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方法

相关文章
相关标签/搜索