Skip to content
Zhexuan Liu edited this page Jun 21, 2018 · 1 revision

Event

1. WebSocket 事件

JS 可以通过 Swift 暴露的 API 进行限定类型的 WebSocket 事件的发送与接受,来与服务器进行有限度的沟通。

JS 目前可以发送下面几种事件到 Server:

  • uploadCameraClips: 在 FastMode 模式下生成 3D 模型,可以通过此事件记录拍照点,格式文档
  • featureControl: JS 可利用此事件作为 Pilot 与 Copilot 之间的沟通通道,格式文档

1.1 WebSocket 事件的发送:

发送事件数据到 Server

mesh.eventManager.sendEventToServer(eventType, data, completion)
参数 类型 说明
eventType String 事件的类型名称
data [String: Any] 事件的数据,格式按照相关文档描述
completion function 回调,如果发生错误的话会传入一个 error 参数,成功则不传入参数

1.2 WebSocket 事件的接收

JS 目前可以经由 Swift 的传递,接收到下面的事件:

接收方法为通过 eventManager 监听对应类型的事件:

mesh.eventManager.addEventHandler(eventName, handler)
参数 类型 说明
eventName String 参数名,可指定上面描述的几种类型
handler function 事件对应的处理代码,带有一个参数,为事件的 data

2. 信息更新事件

一些信息的更新(如飞机的相机工作状态)会以「事件」的形式来回调给 JS。接收方法与上述接收 WebSocket 的方法类似,通过 eventManager

mesh.eventManager.addEventHandler(eventName, handler)

目前信息更新类的事件有:

2.1 Feature 生命周期相关事件

查阅 Feature 文档查看详情。

  • featureWillStart
  • featureDidStart
  • featureStartFail
  • featureDidPause
  • featurePauseFail
  • featureDidStop
  • featureStopFail
  • featureDidResume
  • featureResumeFail
  • featureDidFinish
  • featureExecuteFail
  • featureExecutionProgress

2.2 PageBack 事件

Feature 设置的过程中,或者用户从 Handler 返回上一个页面的时候,都会向 Package 触发 pageBack 事件。

3. 交互相关事件

  • click: 对某个 component 进行了一次点击;
  • change: 某控件的值发生了改变;
  • setting: 用户进入了某个 Feature 的设置流程;
  • readyToExecute: 用户进入了某个 Feature 的执行流程(Handler 页面);
  • activeDeviceChanged: 用户在 Handler 页面中通过设备列表切换了信息来源设备;

交互相关的事件是通过调用 Package 中的全局函数 GestureEventHandler 来向 Package 触发的:

jsContext.evaluateScript("GestureEventHandler").call(withArguments: [moduleID, event.rawValue, params])
Clone this wiki locally