1. Cordova 分析

1.1. Cordova-Android

1.1.1. Web > Native

实现过程

Cordova-Android 监听 JS

SystemExposedJsApi exposedJsApi = new SystemExposedJsApi(bridge);
        webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");

Web > Web 插件

Web 调用 Web 插件自定义的函数

Web 插件 > Cordova-Android

cordova.exec()

Cordova-Android > Native 插件

window._cordovaNative.exec() > SystemExposedJsApi.exec()

Native 插件 > Cordova-Android

execute()

Cordova-Android > Web

执行 Web 定义的 Callback

SystemExposedJsApi.execute() > callbackContext.sendPluginResult(r)

1.2. Cordova-iOS

1.2.1. Web > Native

实现过程

Cordova-iOS 注册 Native 插件

把 Native 插件中继承 CDVPlugin 的类注册到 Cordova

Web > Web 插件

Web 调用 Web 插件自定义的函数

Web 插件 > Cordova-iOS

cordova.exec()

Cordova-iOS > Native 插件

exec.js 的 pokeNative() 以 iframe 方式发送请求 > UIWebViewDelegate 的 shouldStartLoadWithRequest 监听请求 > CDVPlugin

Native 插件 > Cordova-iOS

  • 继承 CDVPlugin 的类实现 Web 插件 定义的方法
  • 调用 CDVCommandDelegate- (void)sendPluginResult:(CDVPluginResult*)result callbackId:(NSString*)callbackId 方法实现回调

results matching ""

    No results matching ""