

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 嵌入式 Amazon WorkSpaces 应用程序流式传输会话的常量、函数和事件
<a name="constants-functions-events-embedded-sessions"></a>

以下主题提供了常量、函数和事件的参考信息，您可以使用这些信息来配置嵌入式 WorkSpaces 应用程序流式传输会话。

**Topics**
+ [使用 `HIDDEN_ELEMENTS`](#constants-hidden-elements)
+ [`AppStream.Embed` 对象的函数](#functions-embed-object)
+ [嵌入式 WorkSpaces 应用程序流媒体会话事件](#events-embedded-streaming-sessions)
+ [添加事件侦听器和结束嵌入式 WorkSpaces 应用程序流式传输会话的示例](#examples-add-event-listeners-end-embedded-streaming-session)

初始化嵌入式 WorkSpaces 应用程序流式传输会话时，可以将以下 WorkSpaces 应用程序用户界面元素传递到`HIDDEN_ELEMENTS`配置选项中。

## 使用 `HIDDEN_ELEMENTS`
<a name="constants-hidden-elements"></a>

初始化嵌入式 WorkSpaces 应用程序流式传输会话时，可以将以下 WorkSpaces 应用程序用户界面元素作为常量传递到`HIDDEN_ELEMENTS`配置选项中。

```
AppStream.Embed.Elements.TOOLBAR
AppStream.Embed.Elements.FULLSCREEN_BUTTON
AppStream.Embed.Elements.END_SESSION_BUTTON
AppStream.Embed.Elements.TOOLBAR
AppStream.Embed.Elements.CATALOG_BUTTON
AppStream.Embed.Elements.WINDOW_SWITCHER_BUTTON
AppStream.Embed.Elements.FILES_BUTTON
AppStream.Embed.Elements.CLIPBOARD_BUTTON
AppStream.Embed.Elements.COPY_LOCAL_BUTTON
AppStream.Embed.Elements.PASTE_REMOTE_BUTTON
AppStream.Embed.Elements.SETTINGS_BUTTON
AppStream.Embed.Elements.STREAMING_MODE_BUTTON
AppStream.Embed.Elements.SCREEN_RESOLUTION_BUTTON
AppStream.Embed.Elements.REGIONAL_SETTINGS_BUTTON
AppStream.Embed.Elements.FULLSCREEN_BUTTON
AppStream.Embed.Elements.END_SESSION_BUTTON
```

以下三个元素可以作为字符串（而不是作为常量）传递到 HIDDEN\_ELENERS 中。


| 字符串 | 说明 | 
| --- | --- | 
| 'adminCommandsButton' | 当您连接到 WorkSpaces 应用程序映像生成器时，“管理命令” 按钮会显示在 WorkSpaces 应用程序工具栏的右上角。将此字符串传递到 HIDDEN\_ELEMENTS 可以隐藏管理员命令按钮。 | 
| 'softKeyboardButton' | 在启用触控功能的设备上进行 WorkSpaces 应用程序流式传输会话期间，用户可以点击 WorkSpaces 应用程序工具栏上的键盘图标以显示屏幕键盘。将此字符串传递到 HIDDEN\_ELEMENTS 可以隐藏键盘图标。 | 
| 'keyboardShortcutsButton' | 在启用触控功能的设备上进行 WorkSpaces 应用程序流式传输会话期间，用户可以点击 WorkSpaces 应用程序工具栏上的 Fn 图标来显示键盘快捷键。将此字符串传递到 HIDDEN\_ELEMENTS 可以隐藏 Fn 图标。 | 

## `AppStream.Embed` 对象的函数
<a name="functions-embed-object"></a>

下表列出了可以在 `AppStream.Embed` 对象上执行的函数。


| 函数 | 说明 | 
| --- | --- | 
| AppStream.Embed(containerId:string, options:object) | AppStream.Embed 对象构造函数。该构造函数初始化 AppStream.Embed 对象并与其通信，并使用 div 容器 ID。该 ID 用于注入 iframe。它还会注入一个包含appstreamOptions（{{sessionURL}}和HIDDEN\_ELEMENTS）配置选项的对象。 | 
| endSession() | 此函数终止流式传输会话，但不会销毁 iframe。如果您指定了重定向 URL，则 iframe 将尝试加载该 URL。根据页面的 CORS 标头，可能无法加载该 URL。 | 
| launchApp(appId:string) | 此函数使用映像创建期间指定的应用程序 ID，以编程方式启动应用程序。 | 
| launchAppSwitcher() | 此函数将AppSwitcher命令发送到 WorkSpaces 应用程序门户。这会在实例上触发 AppSwitcher 命令。 | 
| getSessionState() | 此函数返回 sessionStatus 的对象。有关更多信息，请参阅 [嵌入式 WorkSpaces 应用程序流媒体会话事件](#events-embedded-streaming-sessions)。 | 
| getUserInterfaceState() | 此函数返回 `UserInterfaceState` 的对象。该对象包含以下内容的键值对：<br />`sessionStatus`：状态枚举<br />`sessionTerminationReason`：字符串<br />`sessionDisconnectionReason`：字符串<br /> 有关更多信息，请参阅 [嵌入式 WorkSpaces 应用程序流媒体会话事件](#events-embedded-streaming-sessions)。 | 
| addEventListener(name, callback) | 此函数添加了一个在触发指定事件时调用的回调函数。有关可以触发的事件列表，请参阅 [嵌入式 WorkSpaces 应用程序流媒体会话事件](#events-embedded-streaming-sessions)。 | 
| removeEventListener(name, callback) | 此函数删除指定事件的回调。 | 
| destroy() | 此函数删除 iframe 并清除资源。此函数不会影响正在进行的流式传输会话。 | 

## 嵌入式 WorkSpaces 应用程序流媒体会话事件
<a name="events-embedded-streaming-sessions"></a>

下表列出了在嵌入式 WorkSpaces 应用程序流式传输会话期间可以触发的事件。


| 事件 | 数据 | 说明 | 
| --- | --- | --- | 
| AppStream.Embed.Events.SESSION\_STATE\_CHANGE | `sessionStatus`: `State enumeration`<br />`sessionTerminationReason`：字符串<br />`sessionDisconnectionReason`：字符串 | 此事件在发生任何会话状态更改时触发。此事件包括已更改状态的映射。要检索完整会话状态，请使用 `getSessionState()` 函数。<br />以下是会话状态：<br />`AppStream.Embed.SessionStatus.Unknown` - 会话未启动且未预留<br />`AppStream.Embed.SessionStatus.Reserved` - 会话已预留但未启动。<br />`AppStream.Embed.SessionStatus.Started` - 用户已连接到会话并已开始流式传输。<br />`AppStream.Embed.SessionStatus Disconnected ` - 用户已断开与会话的连接。<br />`AppStream.Embed.SessionStatus.Ended` - 会话已标记为已结束或已过期。 | 
| AppStream.Embed.Events.SESSION\_INTERFACE\_STATE\_CHANGE | `hiddenElements`：字符串数组<br /> `isFullscreen`：布尔值<br />`isSoftKeyboardVisible`：布尔值 | 此事件在发生任何会话状态更改时触发。此事件包括已更改状态的映射。要检索完整会话状态，请使用 getSessionState() 函数。 | 
| AppStream.Embed.Events.SESSION\_ERROR | `errorCode`：数字<br />`errorMessage`：字符串 | 此事件在会话期间发生任何错误时触发。 | 

## 添加事件侦听器和结束嵌入式 WorkSpaces 应用程序流式传输会话的示例
<a name="examples-add-event-listeners-end-embedded-streaming-session"></a>

本节中的示例向您展示如何执行以下操作：
+ 为嵌入式 WorkSpaces 应用程序流式传输会话添加事件侦听器。
+ 以编程方式结束嵌入式 WorkSpaces 应用程序流式传输会话。

### 示例 1：为嵌入式 WorkSpaces 应用程序流式传输会话添加事件监听器
<a name="example-add-event-listeners"></a>

要针对嵌入式流式传输会话期间的会话状态更改、会话接口状态更改和会话错误添加事件侦听器，请使用以下代码：

```
appstreamEmbed.addEventListener(AppStream.Embed.Events.SESSION_STATE_CHANGE, updateSessionStateCallback);

appstreamEmbed.addEventListener(AppStream.Embed.Events.SESSION_INTERFACE_STATE_CHANGE, updateUserInterfaceStateCallback);

appstreamEmbed.addEventListener(AppStream.Embed.Events.SESSION_ERROR, errorCallback);
```

在此示例中，`AppStream.Embed.Events.SESSION_STATE_CHANGE`、`AppStream.Embed.Events.SESSION_INTERFACE_STATE_CHANGE` 和 `AppStream.Embed.Events.SESSION_ERROR` 是事件名称。

`updateSessionStateCallback`、`updateUserInterfaceStateCallback` 和 `errorCallback` 是您实施的函数。这些函数传递到 `addEventListener` 函数中，并在触发事件时调用。

### 示例 2：以编程方式结束嵌入式 WorkSpaces 应用程序流式传输会话
<a name="programmatically-end-embedded-streaming-session"></a>

要结束嵌入式 WorkSpaces 应用程序流式传输会话，请使用以下函数：

```
appstreamEmbed.endSession();
```