发帖
3 0 0

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

qq243559086
金牌会员

14

主题

0

回帖

1479

积分

金牌会员

积分
1479
爱星物联IoT云平台 1004 3 2024-6-5 10:13:27
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必须放在[ ] 中。AndroidiOS的两个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.argumentsexec方法的第5个参数,(所以仅限json支持的类型)
CDVCommandStatus_OK result successCallback的回调
CDVCommandStatus_ERROR result errorCallback的回调
messageAsXXX 是原生回调带的参数,就是js能得到的参数,要保证AndroidiOS的参数类型一致。
sendPluginResult 是发送回调,只能回调一个

3、做完以上步骤,在H5代码中就可以调用了,调用方法必须和插件的其他方法调用前缀保持一致,例如
cleanup是:navigator.camera.cleanup()
sayHello 方法就是:navigator.camera.sayHello(‘aaa’,  (str) => {},  (str) => {})

──── 0人觉得很赞 ────

使用道具 举报

滴滴滴,学习卡!
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 30474 个
  • 话题数: 44643 篇