zoukankan      html  css  js  c++  java
  • 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方法

  • 相关阅读:
    STM32 端口复用配置
    stm32 新建文件记得添加到工程
    keil解决SYSTEMsysstm32f10x.h(298): error: #67: expected a "}"
    解决Keil复制中文乱码
    STM32 MPU6050 源码
    STM32 PWM输出
    STM32定时器
    STM32 看门狗操作姿势
    开课博客
    第二周学习进度
  • 原文地址:https://www.cnblogs.com/loserof/p/5808763.html
Copyright © 2011-2022 走看看