可以通过在应用中支持删除和修改选项来扩展和增强用户体验。 Teams 使用户能够重命名或删除频道或群组选项卡,并且你可以允许用户在安装后重新配置选项卡。 此外,选项卡删除体验为用户提供了删除后选项以删除或存档内容。

本主题反映 Microsoft Teams JavaScript 客户端库版本 2.0.x (TeamsJS) 。 如果使用的是早期版本,请参阅 TeamsJS 库概述 ,获取有关最新 TeamsJS 与早期版本之间的差异的指导。

使选项卡可在安装后重新配置

manifest.json 定义选项卡的特性和功能。 选项卡实例 canUpdateConfiguration 属性采用布尔值,该值指示用户是否可以在创建选项卡后修改或重新配置选项卡。 下表提供了属性详细信息:

为应用程序创建选项卡删除页

可选删除页是你托管的 HTML 页面,在删除选项卡时显示。 删除页面 URL 由 setConfig() 配置页中的 (或 setSettings() TeamsJS v.2.0.0 之前的方法指定,) 。 与应用中的所有页面一样,删除页必须符合 Teams 选项卡先决条件

注册删除处理程序

(可选)在删除页逻辑中,可以在用户删除现有选项卡配置时调用 registerOnRemoveHandler((RemoveEvent) => {} 事件处理程序。 当用户尝试删除内容时,该方法将采用 RemoveEvent 接口,并在处理程序中执行代码。 方法用于执行清理操作,例如删除为选项卡内容提供支持的基础资源。 一次只能注册一个删除处理程序。

RemoveEvent 接口用两种方法描述对象:

  • notifySuccess() 函数是必需的。 它指示基础资源删除成功,并且可以删除其内容。

  • notifyFailure(string) 函数是可选的。 它指示删除基础资源失败,并且无法删除其内容。 可选字符串参数指定失败的原因。 如果提供,则会向用户显示此字符串;否则会显示一般性错误。

    使用 getConfig() 函数

    可以使用 getConfig() 以前 getSettings() ) (来分配要删除的选项卡内容。 函数 getConfig() 返回一个 promise,该承诺使用 Config 对象进行解析,并提供可检索的有效设置属性值。

    使用 getContext() 函数

    可以使用 getContext() 获取运行帧的当前上下文。 函数 getContext() 返回一个承诺,该承诺将使用 Context 对象解析。 Context 对象提供可在删除页逻辑中使用的有效 Context 属性值,以确定要显示在删除页中的内容。

    包括身份验证

    在允许用户删除选项卡内容之前,需要进行身份验证。 上下文信息可用于帮助构造身份验证请求和授权页面 URL。 请参阅 选项卡的 Microsoft Teams 身份验证流程 。 确保选项卡页中使用的所有域都列在应用清单的数组中 validDomains

    下面是一个示例选项卡删除代码块:

    TeamsJS v2 TeamsJS v1 <button onclick="onClick()">Delete this tab and all underlying data?</button> <script> await microsoftTeams.app.initialize(); pages.config.registerOnRemoveHandler((removeEvent) => { // Here you can designate the tab content to be removed and/or archived. const configPromise = pages.getConfig(); configPromise. then((configuration) => { configuration.contentUrl = "..."; removeEvent.notifySuccess()}). catch((error) => {removeEvent.notifyFailure("failure message")}); const onClick() => { pages.config.setValidityState(true); </script> </body> <button onclick="onClick()">Delete this tab and all underlying data?</button> <script> microsoftTeams.initialize(); microsoftTeams.settings.registerOnRemoveHandler((removeEvent) => { // Here you can designate the tab content to be removed and/or archived. microsoftTeams.settings.getSettings((settings) => { settings.contentUrl = "..." removeEvent.notifySuccess(); const onClick() => { microsoftTeams.settings.setValidityState(true); </script> </body>

    当用户从选项卡的下拉菜单中选择“ 删除” 时,Teams 会将 配置页 中分配的可选 removeUrl 页面加载到 iFrame 中。 向用户显示一个加载了函数的 onClick() 按钮,该函数调用 pages.config.setValidityState(true) 并启用删除页面 iFrame 底部显示的“ 删除 ”按钮。

    执行删除处理程序后, removeEvent.notifySuccess() removeEvent.notifyFailure() 将通知 Teams 内容删除结果。

  • 为了确保授权用户对选项卡的控制不遭禁止,Teams 在成功和失败情况下都会删除选项卡。
  • 调用 registerOnRemoveHandler 事件处理程序后,将有 15 秒的时间响应该方法。 默认情况下,即使你不调用 setValidityState(true) ,Teams 也会在五秒后启用“ 删除 ”按钮。 启用“ 删除 ”按钮后,为确保不阻止用户删除选项卡,不允许应用通过调用 setValidityState(false) 来禁用 “删除 ”按钮。
  • 当用户选择“ 删除 ”时,无论操作是否已完成,Teams 都会在 30 秒后删除该选项卡。
  • 移动设备上的选项卡

  • Teams 的生成选项卡
  • Teams 的应用清单架构
  • RemoveEvent 接口
  • 获取选项卡的上下文
  • 创建个人选项卡
  • 创建频道选项卡或组选项卡
  •