

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

# 使用 Amazon Quick Sight Embedging SDK 启用指向嵌入式控制面板视图的可共享链接
<a name="embedded-view-sharing"></a>

Amazon Quick Sight 开发人员可以使用 Amazon Quick Sight Embedding SDK（版本 2.8.0 及更高版本），允许嵌入式仪表板的读者接收和分发指向嵌入式仪表板视图的可共享链接。开发人员可以使用仪表板或控制台嵌入来生成指向其应用程序页面的可共享链接，其中包含使用Amazon Quick Sight嵌入软件开发工具包封装的Amazon Quick Sight参考文献。然后，Amazon Quick Sight Readers 可以将此可共享链接发送给同行。当他们的同行访问共享链接时，他们会被带到包含嵌入式 Amazon Quick Sight 控制面板的应用程序页面。开发人员还可以生成和保存控制面板视图的可共享链接，当使用匿名嵌入时，这些链接可用作 Amazon Quick Sight 匿名读者的书签。

**先决条件**

在开始之前，请确保您使用的是 Amazon Quick Sight Embedding SDK 版本 2.8.0 或更高版本

**Topics**
+ [

# 为 Amazon Quick Sight 嵌入式分析启用`SharedView`功能配置
](embedded-view-sharing-set-up.md)
+ [

# 使用 Amazon Quick Sight `createSharedView` API 创建共享视图
](embedded-view-sharing-sdk-create.md)
+ [

# 使用共享的 Amazon Quick Sight 视图
](embedded-view-sharing-sdk-consume.md)

# 为 Amazon Quick Sight 嵌入式分析启用`SharedView`功能配置
<a name="embedded-view-sharing-set-up"></a>

当您使用 Amazon Quick Sight API 创建嵌入式实例时，请将`FeatureConfigurations`有效负载中的值设置为`true`，如下例所示。`SharedView` `SharedView`覆盖访问嵌入式仪表板的注册用户的`StatePersistence`配置。如果控制面板用户已禁用 `StatePersistence` 并启用 `SharedView`，则其状态将保留。

```
const generateNewEmbedUrl = async () => {
    const generateUrlPayload = {
        experienceConfiguration: {
            QuickSightConsole: {
            FeatureConfigurations: {
                "SharedView": { 
                    "Enabled": true
                 },
            },
        },
    }
    const result: GenerateEmbedUrlResult = await generateEmbedUrlForRegisteredUser(generateUrlPayload);
    return result.url;
};
```

# 使用 Amazon Quick Sight `createSharedView` API 创建共享视图
<a name="embedded-view-sharing-sdk-create"></a>

将 Embedding SDK 更新至版本 2.8.0 或更高版本后，请使用 `createSharedView` API 创建新的共享视图。记录操作返回的 `sharedViewId` 和 `dashboardId`。下面的示例创建了一个新的共享视图。

```
const response = await embeddingFrame.createSharedView();
const sharedViewId = response.message.sharedViewId;
const dashboardId = response.message.dashboardId;
```

仅当用户查看控制面板时才能调用 `createSharedView`。对于特定于控制台的共享视图创建，请先确保用户位于控制面板页面上，然后再启用 `createSharedView` 操作。您可以使用 `PAGE_NAVIGATION` 事件执行此操作，如下例所示。

```
const contentOptions = {
    onMessage: async (messageEvent, metadata) => {
    switch (messageEvent.eventName) {
            case 'CONTENT_LOADED': {
                console.log("Do something when the embedded experience is fully loaded.");
                break;
            }
            case 'ERROR_OCCURRED': {
                console.log("Do something when the embedded experience fails loading.");
                break;
            }
            case 'PAGE_NAVIGATION': {
                setPageType(messageEvent.message.pageType); 
                if (messageEvent.message.pageType === 'DASHBOARD') {
                    setShareEnabled(true);
                    } else {
                    setShareEnabled(false);
                }
                break;
            }
        }
    }
};
```

# 使用共享的 Amazon Quick Sight 视图
<a name="embedded-view-sharing-sdk-consume"></a>

创建新的共享视图后，请使用 Embedding SDK 使其他用户可以使用共享视图。以下示例在 Amazon Quick Sight 中为嵌入式控制面板设置了可使用的共享视图。

------
#### [ With an appended URL ]

将 `sharedViewId` 附加到嵌入式 URL（位于 ` /views/{viewId}` 下），并将此 URL 公开给您的用户。用户可以使用此 URL 导航到该共享视图。

```
const response = await dashboardFrame.createSharedView();
const newEmbedUrl = await generateNewEmbedUrl();
const formattedUrl = new URL(newEmbedUrl);
formattedUrl.pathname = formattedUrl.pathname.concat('/views/' + response.message.sharedViewId);
const baseUrl = formattedUrl.href;
alert("Click to view this QuickSight shared view", baseUrl);
```

------
#### [ With the contentOptions SDK ]

将 `viewId` 传递给 `contentOptions` 以打开具有给定 `viewId` 的体验。

```
const contentOptions = {
    toolbarOptions: {
        ...
    },
    viewId: sharedViewId,
};

const embeddedDashboard = await embeddingContext.embedDashboard(
    {container: containerRef.current},
    contentOptions
);
```

------
#### [ With the InitialPath property ]

```
const shareView = async() => {
    const returnValue = await consoleFrame.createSharedView();
    const {dashboardId, sharedViewId} = returnValue.message;
    const newEmbedUrl = await generateNewEmbedUrl(`/dashboards/${dashboardId}/views/${sharedViewId}`);
    setShareUrl(newEmbedUrl);
};

const generateNewEmbedUrl = async (initialPath) => {
    const generateUrlPayload = {
        experienceConfiguration: {
            QuickSightConsole: {
            InitialPath: initialPath,
            FeatureConfigurations: {
                "SharedView": { 
                    "Enabled": true
                 },
            },
        },
    }
    const result: GenerateEmbedUrlResult = await generateEmbedUrlForRegisteredUser(generateUrlPayload);
    return result.url;
};
```

------