如何用最简单的方式给Cordova插件添加新接口

[复制链接]
查看657 | 回复3 | 2024-6-5 10:13:27 | 显示全部楼层 |阅读模式
1、添加js方法
Android项目 app > assets > www > plugins > 对应的js文件
cor1.png
iOS 项目 Staging > www > plugins > 对应的js文件
cor2.png
此文件中必须包含一个调用了exec(xxx, xxx, xxx, xxx, xxx)方法,然后照猫画虎复制一个方法,修改方法名称和参数,例如:
添加一个 sayHello 方法,带了一个arg0 参数,sayHello 有两处如下图,要保证一致,exec 的第三个参数和上面的方法的保持一致,successCallback是成功回调,errorCallback是错误回调,arg0必须放在[ ] 中。AndroidiOS的两个js文件中保持此方法一致
cor3.png
2、在原生中添加代码
2.1找到 Android中对应插件继承了 CordovaPlugin 的类
cor4.png
找到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 方法有效
cor5.png

2.2找到 iOS中对应插件继承了 CDVPlugin的类,找到带有(CDVInvokedUrlCommand *)command参数的方法,如下图
c1.png
复制一个方法,把方法名改成sayHello,方法名是js文件中exec方法的第4个参数
c2.png
编写代码:
command.argumentsexec方法的第5个参数,(所以仅限json支持的类型)
CDVCommandStatus_OK result successCallback的回调
CDVCommandStatus_ERROR result errorCallback的回调
messageAsXXX 是原生回调带的参数,就是js能得到的参数,要保证AndroidiOS的参数类型一致。
sendPluginResult 是发送回调,只能回调一个
c3.png
3、做完以上步骤,在H5代码中就可以调用了,调用方法必须和插件的其他方法调用前缀保持一致,例如
cleanup是:navigator.camera.cleanup()
sayHello 方法就是:navigator.camera.sayHello(‘aaa’,  (str) => {},  (str) => {})

回复

使用道具 举报

1084504793 | 2024-6-5 10:44:33 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-6-5 10:52:41 | 显示全部楼层
滴滴滴,学习卡!
用心做好保姆工作
回复 支持 反对

使用道具 举报

WT_0213 | 2024-6-5 10:57:02 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则