1、添加js方法
Android项目 app > assets > www > plugins > 对应的js文件 iOS 项目 Staging > www > plugins > 对应的js文件 此文件中必须包含一个调用了exec(xxx, xxx, xxx, xxx, xxx)方法,然后照猫画虎复制一个方法,修改方法名称和参数,例如: 添加一个 sayHello 方法,带了一个arg0 参数,sayHello 有两处如下图,要保证一致,exec 的第三个参数和上面的方法的保持一致,successCallback是成功回调,errorCallback是错误回调,arg0必须放在[ ] 中。Android和iOS的两个js文件中保持此方法一致 2、在原生中添加代码 2.1、找到 Android中对应插件继承了 CordovaPlugin 的类 找到execute(String action, JSONArray args, CallbackContext callbackContext) 方法(如下图),添加代码 action 参数是js文件中exec方法的第4个参数 args 是exec方法的第5个参数,(所以仅限json支持的类型) callbackContext.success() 是成功回调,调用时对应js中的successCallback回调 callbackContext.error() 是错误回调,调用时对应js中的errorCallback回调 回调可以带参数,原生传的参数,就是js能得到的参数,两个回调只能调一个 return true 表示sayHello 方法有效
2.2、找到 iOS中对应插件继承了 CDVPlugin的类,找到带有(CDVInvokedUrlCommand *)command参数的方法,如下图 复制一个方法,把方法名改成sayHello,方法名是js文件中exec方法的第4个参数 编写代码: command.arguments是exec方法的第5个参数,(所以仅限json支持的类型) CDVCommandStatus_OK 的 result 是 successCallback的回调 CDVCommandStatus_ERROR 的 result 是 errorCallback的回调 messageAsXXX 是原生回调带的参数,就是js能得到的参数,要保证Android和iOS的参数类型一致。 sendPluginResult 是发送回调,只能回调一个 3、做完以上步骤,在H5代码中就可以调用了,调用方法必须和插件的其他方法调用前缀保持一致,例如 cleanup是:navigator.camera.cleanup() sayHello 方法就是:navigator.camera.sayHello(‘aaa’, (str) => {}, (str) => {})
|