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

转载于:https://www.cnblogs.com/loserof/p/5808763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值