ios cordova 原生与js通讯原理
Posted 斐济的夜光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios cordova 原生与js通讯原理相关的知识,希望对你有一定的参考价值。
在ios中,cordova的CDVViewController继承了viewController,每一个h5的页面,都对应一个CDVVIewController,
里面都有一个webview,是ios中专门显示h5页面的view.
h5和原生端的交互,主要是通过插件的形式实现,原生这边写一个类继承CDVPlugin,然后实现方法,js那边封装好每个接口的方法,
最终通过调用cordova.js里的exec,传入服务类名,方法名,以及回调函数及参数等进行调用。
它的通讯原理是:有两种方法
1、通过iframe,cordova.exec函数里通过向html插入一个不可见的iframe,从而会向UIWebView请求加载一个特殊的URL,
url里包括了plugin插件的类名,方法名。
由于请求了url,这时会触发UIWeibviewDegate的shouldStartLoadWithRequest
这里会进入原生则,原生通过request获取类名和方法名进行处理
2、通过XHR,cordova.exec通过发起一个xhr请求,这时候就会被NSURLProtocol拦截
原生的canInitWithRequest就会被调用,从而进入到原生
原生调用js的方法,是直接通过stringByEvaluatingjavascriptFromString直接调用js方法
以上是关于ios cordova 原生与js通讯原理的主要内容,如果未能解决你的问题,请参考以下文章
用Cordova把react app 打包成原生的iOS项目