-
Notifications
You must be signed in to change notification settings - Fork 0
Event
Zhexuan Liu edited this page Jun 21, 2018
·
1 revision
JS 可以通过 Swift 暴露的 API 进行限定类型的 WebSocket 事件的发送与接受,来与服务器进行有限度的沟通。
JS 目前可以发送下面几种事件到 Server:
- uploadCameraClips: 在 FastMode 模式下生成 3D 模型,可以通过此事件记录拍照点,格式文档
- featureControl: JS 可利用此事件作为 Pilot 与 Copilot 之间的沟通通道,格式文档
发送事件数据到 Server
mesh.eventManager.sendEventToServer(eventType, data, completion)
参数 | 类型 | 说明 |
---|---|---|
eventType | String | 事件的类型名称 |
data | [String: Any] | 事件的数据,格式按照相关文档描述 |
completion | function | 回调,如果发生错误的话会传入一个 error 参数,成功则不传入参数 |
JS 目前可以经由 Swift 的传递,接收到下面的事件:
接收方法为通过 eventManager
监听对应类型的事件:
mesh.eventManager.addEventHandler(eventName, handler)
参数 | 类型 | 说明 |
---|---|---|
eventName | String | 参数名,可指定上面描述的几种类型 |
handler | function | 事件对应的处理代码,带有一个参数,为事件的 data |
一些信息的更新(如飞机的相机工作状态)会以「事件」的形式来回调给 JS。接收方法与上述接收 WebSocket 的方法类似,通过 eventManager
:
mesh.eventManager.addEventHandler(eventName, handler)
目前信息更新类的事件有:
查阅 Feature 文档查看详情。
- featureWillStart
- featureDidStart
- featureStartFail
- featureDidPause
- featurePauseFail
- featureDidStop
- featureStopFail
- featureDidResume
- featureResumeFail
- featureDidFinish
- featureExecuteFail
- featureExecutionProgress
Feature 设置的过程中,或者用户从 Handler 返回上一个页面的时候,都会向 Package 触发 pageBack
事件。
- click: 对某个 component 进行了一次点击;
- change: 某控件的值发生了改变;
- setting: 用户进入了某个 Feature 的设置流程;
- readyToExecute: 用户进入了某个 Feature 的执行流程(Handler 页面);
- activeDeviceChanged: 用户在 Handler 页面中通过设备列表切换了信息来源设备;
交互相关的事件是通过调用 Package 中的全局函数 GestureEventHandler
来向 Package 触发的:
jsContext.evaluateScript("GestureEventHandler").call(withArguments: [moduleID, event.rawValue, params])