30.jsbridge
概述
DJI Pilot 2内嵌的Webview中的H5页面需要开发者自定义设计开发,然后页面的数据和信息是通过JSBridge与DJI Pilot 2进行通信,具体可以通信的JSBridge接口如下:
JS接口
接口功能
参数说明
window.djiBridge.platformSetWorkspaceId(String uuid)
设置工作空间ID
uuid: 工作空间的标识,该id必须为uuid格式。 示例:e3dea0f5-37f2-4d79-ae58-490af3228069
window.djiBridge.platformSetInformation(String platformName, String workspaceName, String desc)
设置平台名称
platformName: 平台名称 workspaceName: DJI Pilot 2上云入口显示工作空间名称 desc: DJI Pilot 2上云入口显示工作空间描述
window.djiBridge.platformGetRemoteControllerSN() : String
获取遥控器SN
返回:遥控器SN
window.djiBridge.platformGetAircraftSN() : String
获取飞机SN
返回:飞机SN
window.djiBridge.platformStopSelf()
关闭并退出平台
退出webview平台
window.djiBridge.apiSetToken(String token)
设置Token
注意:需要加载API模块后才能获取到
window.djiBridge.apiGetToken()
获取Token
从DJI Pilot 2获取api Token
window.djiBridge.onBackClick()
返回键回调
在webview页面时,点击页面左上角的返回键时,会触发该接口回调,如果返回值是true,则DJI Pilot 2不处理,如果是false或者没有实现该函数,则DJI Pilot 2会退出webview页面,效果会跟遥控器实体返回按键一致。注意:遥控器返回键无法触发该回调。
window.djiBridge.onStopPlatform()
退出云平台回调
App点击退出云平台之前,会调用该js方法,js方法执行结束之后,APP才会继续执行退出平台的动作
window.djiBridge.platformSetLogEncryptKey(String key)
设置日志加密key
设置DJI Pilot 2保存的log日志的公钥
window.djiBridge.platformClearLogEncryptKey()
清除日志加密key
清除DJI Pilot 2保存的log日志公钥
window.djiBridge.platformGetLogPath()
获取日志路径
获取DJI Pilot 2保存的日志路径
window.open('scheme://host...', arg);
跳转到第三方App
采用Scheme格式
window.djiBridge.platformGetVersion()
获取版本号
返回: modelVersion:物模型版本 appVersion:APP版本
window.djiBridge.platformIsVerified()
查看接口是否被认证
查看证书是否已经被认证,发起js通信之前,如果没有认证情况下,会出现通信失败。
window.djiBridge.platformVerifyLicense(String appId,String appKey,String license)
License认证
appId: 开发者网站上申请的上云API appId appKey: 开发者网站上申请的上云API appKey license:开发者网站上申请的上云API license 特别注意:需要先通过认证,JSBridge相关的接口才能被调用
window.djiBridge.platformLoadComponent(String name, String param)
加载功能模块
window.djiBridge.platformUnloadComponent(String name)
去除功能模块
-
window.djiBridge.platformIsComponentLoaded(String name)
判断模块是否加载
-
window.djiBridge.platformIsAppInstalled(String pkgName)
检查是否安装了某APP载
pkgName: App包名
返回结构体
所有的JSBridge用于设置的接口都有返回结构体,结构体模板如下:
//特别注意:JSBridge接口返回值是string类型,需要通过JSON.parse(res)方法进行转换。
{
code: 0, //0: 执行成功, 非0: 执行异常
message: error message, //异常情况说明
data: { //正常情况时的数据,类型T: boolean, String, Int, Object
}
}设备上云模块
name: thing
param:
{
host: url, //mqtt地址,示例: tcp://xx.xx.xx.xx:xxx
connectCallback: js_callback, //连接状态回调js接口
username:xxxxx,
password:xxxx
}注意:由于mqtt连接有基于tcp或者websocket的区别,所以DJI Pilot 2中 mqtt url地址需要使用tcp:// ws://
只有加载了对应的模块,模块内的js接口才能正常工作
模块js接口
获取连接状态:
window.djiBridge.thingGetConnectState() : Boolean启动连接:
window.djiBridge.thingConnect(String userName, String passwd, String callback)关闭连接:
window.djiBridge.thingDisconnect()设置回调函数:
window.thing.setConnectCallback(String callback)返回设置的参数param:
window.djiBridge.thingGetConfigs(): String
直播模块
name: liveshare
param:
{
videoPublishType: video-on-demand, //直播方式,服务器点播,手动点播,混合模式
statusCallback: js_callback, // 直播状态回调
}模块js接口
设置直播模式:
window.djiBridge.liveshareSetVideoPublishType(String type)参数:
video-on-demand:服务器点播,依赖于thing模块,具体的点播命令参见设备物模型的直播服务。video-by-manual:手动点播,配置好直播类型参数之后,在图传页面可修改直播参数,停止直播。video-demand-aux-manual:混合模式,支持服务器点播,以及图传页面修改直播参数,停止直播。获取直播参数:
window.djiBridge.liveshareGetConfig(): String返回值:
{ type: Int, //直播类型 0:未知直播,1:声网,2:RTMP,3:RTSP,4:GB28181 params: { //参考liveshareManualStart参数说明 } }App端手动发起直播:
window.djiBridge.liveshareSetConfig(type: Int, params: String)参数:
//type:1 agora { uid: xxxxx, token: xxxxx, channelId: xxxxx } //type:2 RTMP { url: xxxxxx.xxxxx.xxxxxx.xxx } //type:3 RTSP { userName: xxx, password: xxx, port: xxxx } //type:4 GB28181 { serverIp: xxx, //服务器IP serverPort: xxx, //服务器端口 serverId: xxxx, //服务器ID agentId: xxxx, //客户帐号 password: xxx, //密码 agentPort: xxx, //本地端口 agentChannel: xxx, //通道号 }直播状态监听:
window.djiBridge.liveshareSetStatusCallback(jsCallback)返回值:
{ type:Int, //参考上文中的直播类型 status: Int,//直播状态, 0:未连接服务器,1:连接服务器,2:正在直播 fps: Int, //推送帧率 videoBitRate: Int, //视频码率 rtt:Int, //延迟,有可能没有 quality:Int, //清晰度,可参考mqtt点播的文档 jitter:Int, dropRate:Int, //丢包率 }获取直播状态:
window.djiBridge.liveshareGetStatus()返回值:
{ type:Int, //参考上文中的直播类型 status: Int,//直播状态, 0:未连接服务器,1:连接服务器,2:正在直播 fps: Int, //推送帧率 videoBitRate: Int, //视频码率 rtt:Int, //延迟,有可能没有 quality:Int, //清晰度,可参考mqtt点播的文档 jitter:Int, dropRate:Int, //丢包率 }开启App端手动直播:
window.djiBridge.liveshareStartLive()结束App端手动直播:
window.djiBridge.liveshareStopLive()
API模块
借助HTTPS实现的功能模块有地图模块、航线管理模块、媒体管理模块、态势感知模块,它们依赖于 API 模块。若 API 模块的参数重新加载,则依赖 API 模块的功能模块也需要重新加载。
name: api
param:
{ host: url, //HTTP接口中的 : {URI-scheme}://{Endpoint} token: token //header中将会带上该X-Auth-Token, }模块js接口
获取设置的token:
window.djiBridge.apiGetToken()重新设置token:
window.djiBridge.apiSetToken(String token)获取设置的host:
window.djiBridge.apiGetHost()
WS模块
连接示例:wss://xxx.xxxx.xxx:8883?x-auth-token=msikdixkFksikflaol
name: ws
param:
{ host: url, //连接示例中的 wss://xxx.xxxx.xxx:8883 token: token, //token 将会被urlencode之后拼接在x-auth-token中 connectCallback: js_callback // 连接上之后将会回调js_callback }模块js接口
获取连接状态:
window.djiBridge.wsGetConnectState()重新连接:
window.djiBridge.wsConnect(String host, String token, String callback)断开连接:
window.djiBridge.wsDisconnect()发送消息:
window.djiBridge.wsSend(String msg), 消息格式参考Websocket接口说明
地图元素模块
name:map
param:
{
userName:name, //用户名称,用于当创建地图元素时,元素的名称
elementPreName:newName //地图元素序号前缀
}注意:在加载“地图元素”模块之前,需要先加载“设备上云模块”和websocket。
模块js接口
设置用户名称:
window.djiBridge.mapSetUserName()设置新增元素序号前缀:
window.djiBridge.mapSetElementPreName()
TSA态势感知模块
name:tsa
param:
{}注意:在加载“地图元素”模块之前,需要先加载“设备上云模块”和websocket。同时参数需要传入{} 空大括号
Media媒体模块
name: media
param:
{ autoUploadPhoto: boolean, //是否自动上传图片, 非必需 autoUploadPhotoType: int, //自动上传的照片类型,0:原图, 1:缩略图, 非必需 autoUploadVideo: boolean // 是否自动上传视频, 非必需 }注意:在加载“Media媒体”模块之前,需要先加载“设备上云模块”,同时媒体库内部逻辑依赖workspace工作空间参数,需要先配置。
模块js接口
设置自动上传照片状态:
window.djiBridge.mediaSetAutoUploadPhoto(boolean auto)获取自动上传照片状态:
window.djiBridge.mediaGetAutoUploadPhoto() : boolean设置自动上传照片类型:
window.djiBridge.mediaSetUploadPhotoType(int type)获取自动上传照片类型:
window.djiBridge.mediaGetUploadPhotoType()设置自动上传视频状态:
window.djiBridge.mediaSetAutoUploadVideo(boolean auto)获取自动上传视频状态:
window.djiBridge.mediaGetAutoUploadVideo() : boolean设置后台自动下载的遥控器:
window.djiBridge.mediaSetDownloadOwner(int rc)0:本控,1:其他控获取后台自动下载的遥控器编号:
window.djiBridge.mediaGetDownloadOwner(): int0:本控,1:其他控
航线模块
name:mission
param:
{}注意:在加载航线模块之前,需要先加载“设备上云模块”。同时参数需要传入{} 空大括号
Last updated