Pilot 上云
创建上云API应用示例
在使用上云API的接口之前,需要在大疆开发者网站中先注册成为开发者,注册完成后,即可创建“上云API”应用,以及可以拿到API交互所需的APP ID、APP 秘钥、APP License,后续在JSBridge交互中,需要先校验这三个参数,如果DJI Pilot 2校验License错误,则无法完成DJI Pilot 2上云的后续动作。Pilot 上云前需要完成License证书校验,API JSBridge:platformVerifyLicense
。


Pilot 上云
注意:
- 当 DJI Pilot 2 与机场在接入第三方云时,对于安全性要求比较高的场景中,需要对通信链路进行加密,实现数据的安全通信。SSL链路默认设备会认证服务端,服务端不认证设备端,若服务端开启设备认证,需要在服务端进行clientAuth的配置。
- DJI Pilot 2 与机场支持Godaddy颁发的证书,若开发者需要做数据安全加密,可以使用与大疆相同的认证机构证书即可实现MQTT SSL认证。
交互时序图
检验Pilot本地存储的Token是否过期,我们划分出以下三种场景:
若无Token,将返回H5登陆界面首页。
若有Token且Token有效,将返回登录后的主页面。
若有Token但Token过期,需要按照如下流程完成。
配置访问链接示例
如下图所示,在DJI Pilot 2的主页面云服务栏目中有“开放平台”入口,然后在开放平台页面中输入访问的URL链接即可发起连接。
由于首次请求H5页面,并没有Token信息,所以需要服务器端开发一个H5登录页面,DJI Pilot 2在每次配置完访问链接,都先去拉取该页面,然后后续的获取Token动作均由该H5页面完成。
注意:
- 访问链接是一个http/https链接,如果需要使用https,则需要进行SSL认证。


Pilot 下云
主动下线 主动下线一般为飞机与遥控断连。
被动下线
接口详细实现
License证书校验
开发者在注册上云API应用之后,需要进行License认证校验,接口详见 JSBridge window.djiBridge.platformVerifyLicense(String appId,String appKey,String license)
获取本地Token
DJI Pilot 2会本地存储访问的Token信息,开发者可以通过Webview JSBridge接口去读取DJI Pilot 2存储的Token信息,这样方便开发者进行校验Token是否过期。接口详见 JSBridge window.djiBridge.apiGetToken()
注意:使用该接口之前,需要先加载“API模块”,接口详见 JSBridge window.djiBridge.platformLoadComponent(String name, String param)
加载设备上云模块
加载上云模块的过程会发起MQTT登录请求,所以需要服务端预先进行MQTT网关的登录账号密码配置并取消MQTT匿名方式登录。当然,如果对于安全性没有要求的,也可以直接采用默认的匿名登录,从而减少MQTT账号密码的配置。
DJI Pilot 2默认是没有加载上云模块的,需要Webview向服务端申请拿到上云模块所需的MQTT相关登录信息,并通过JSBridge加载Pilot2的上云模块和赋值参数。Pilot2的上云模块组件加载之后,会根据获取的MQTT参数,向服务端发起MQTT连接请求,待请求登录成功后,DJI Pilot 2也会通过JSBridge把状态通过回调告知Webview。接口详见 JSBridge window.djiBridge.platformVerifyLicense(String appId,String appKey,String license)
设置工作空间ID/平台信息
Webview在获取到上云模块推送过来的上线成功的信息之后,可以向后台请求需要往DJI Pilot 2中设置的平台和工作空间名称及描述,这三个字段内容由开发者自己根据实际业务需求进行定义。H5页面获取到平台名称、工作空间名称、工作空间描述之后,可以通过JSBridge接口往DJI Pilot 2设置这些信息,DJI Pilot 2则会把这工作空间名称和工作空间描述字段显示在DJI Pilot 2上云入口处,平台名称显示上webview顶部标签栏中。
涉及的API接口:
- 设置工作空间ID:接口详见 JSBridge
window.djiBridge.platformSetWorkspaceId(String uuid)
- 设置平台信息:接口详见 JSBridge
window.djiBridge.platformSetInformation(String platformName, String workspaceName, String desc)

