AMP

在非 AMP 站点上使用 Web Story 播放器创建 Web Story 体验

什么是 Web Story 播放器?

web story player demo
Web Story 播放器演示

Web Story 播放器是您在您的网站上为用户提供丰富的 Web Story 用户体验的最佳方式。把它想象成一个视频播放器:你的设备里有一个视频还好,但把它放在网络上的视频播放器里,它会解锁许多功能和好处:有额外的控件(例如字幕),它与数百万其他视频一起存在,可以在你的原始视频末尾提供相关内容——这增加了可发现性,等等。

您可以类似地看待 Web Story 播放器。仅链接到单个故事,您可能会错过其他故事平台(例如 Instagram、Snapchat)中发现的许多功能和体验,而这些功能和体验对于故事用户来说是很自然的。请参阅下表中的几个示例。

本指南主要包含在播放器的非 AMP 版本中可用的功能。要了解播放器的 AMP 兼容版本可以实现的功能,请访问在 AMP 页面中集成故事文章。

单个故事 Web Story 播放器
更丰富的用户体验
向下滑动退出故事并返回您的网站
滑动到下一个/上一个故事
同一站点的入口点
自定义能力
自定义事件(例如,在故事之间导航)
其他 UI 控件
为故事添加署名
以编程方式获取更多故事
自定义行为(例如循环环绕)

常见的实现

您可以使用 Web Story 播放器在您自己的平台中创建许多体验,从轮播到单张卡片到直接将故事嵌入页面。我们开发了一份详细的 UX 指南,其中包含与这些示例相关的最佳实践。我们推荐的最常见的模式是轮播。我们将概述创建这种体验的最佳实践,但您应该随意尝试并实现最适合您的用例的实践。我们将在未来几周内分享更广泛的 UX 模式列表。

Web Story 播放器轮播

一个故事轮播有多个彼此相邻的故事。它通常包括故事的预览,如缩略图和标题。单击后,它将打开故事。然后,用户可以消费故事或在故事之间滑动。

此示例中的重要方面

  • 在桌面上
  • 在移动设备上
    • 支持滑动以在故事之间导航
    • “滚动背景页面”被禁用,以便将该手势用于滑动关闭
    • 入口点卡片的大小比桌面小
    • 没有背景卡片(因为移动设备中没有悬停)
    • 启用向下滑动以关闭故事
  • 在两种屏幕尺寸上
    • 播放器开始时暂停,只有当用户单击入口点时才开始播放
    • 轮播遵循剧本中的 UX 最佳实践

要查看构建此代码所需的全部代码,请访问codepen 项目

向播放器添加故事

向播放器添加故事有三种主要方法。

  1. 将它们声明为播放器 HTML 中的锚标记。
  2. 使用获取行为从端点获取更多故事。
  3. 使用 add() API 添加一个或多个故事。

如果您只想在播放器中显示静态的故事集,那么您的最佳选择是(1)。但是,如果您想动态添加故事,则可以使用选项(2)或(3)。

显示故事

向播放器显示和添加故事的最简单方法是直接在<amp-story-player>元素所在的 HTML 中将它们声明为<a>标记。请参阅指南的“显示 Web Story”部分中的代码示例。

您可以在用户在 Web Story 播放器中浏览它们时创建“无限滚动”体验。为此,请包括fetch 操作并在 JSON 配置中指定端点。当用户接近最后一个加载的故事时,播放器会自动获取更多故事。您可以通过设置后端个性化系统并使用 fetch 操作来为用户自定义获取的故事。

使用 add() API 添加故事

您可以使用 add() API 手动添加一个或多个故事。

可自定义的 UI

播放器解锁了许多功能,使您可以自定义系统显示的 UI。除了控件之外,您还可以在播放器中为故事添加署名,以便用户知道他们当前正在与之互动的故事的发布者。

为创建者/发布者添加署名

Web Stories 中的署名

故事顶部的创建者标题

故事署名显示实体或发布者的名称和徽标。单击后,它会将用户导航到实体的 URL 或发布者的规范域。

要在故事上显示署名,请使用播放器的displayattribution选项。请参阅JSON 配置

数据将来自故事文档中的<amp-story>元数据属性,如所述

  • 对于徽标:entity-logo-src属性(如果提供),否则为publisher-logo-src属性。
  • 对于文本字符串:entity属性(如果提供),否则为publisher属性。
  • 当单击署名时,它会将用户导航到 URL。这将来自entity-url属性(如果提供),否则将使用故事的规范域。

amp-story 的元数据指南上阅读有关这些属性的更多信息。

修改和添加现有控件

这包括一个“关闭”按钮,用于创建类似灯箱的体验,以及一个“跳到下一个”按钮,用于在桌面上在故事之间导航。您还可以添加自己的自定义控件并侦听其事件以执行自定义操作。请参阅以下示例,以了解您可以执行的操作。

要配置它们,请将具有 type="application/json" 属性的 JSON 配置指定为 <amp-story-player> 元素的子元素。

在配置内部,指定一个“控件”数组。下面介绍了“控件”结构。

配置最终将如下所示

<amp-story-player>

 <script type="application/json">
   {
     "controls": [
       {
         "name": "close",
         "position": "start"
       },
       {
         "name": "skip-to-next"
       }
     ]
   }
 </script>

<a href="./story1.html"> ... </a>
<a href="./story2.html"> ... </a>
</amp-story-player>

示例 1 - 起始位置的关闭按钮

由于默认设置(当包含自定义 UI 配置 JSON 时)会将所有这些按钮设置在右侧,我们所要做的就是将关闭按钮移动到起始位置。

<amp-story-player>
 <script type="application/json">
   {
     "controls": [
       {
         "name": "close",
         "position": "start"
       }
     ],
   }
 </script>
 ...

播放器起始位置的关闭控件

示例 2 - 在桌面上显示“跳到下一个故事”

在桌面上,您现在可以显示一个按钮,该按钮将从当前故事导航到下一个故事。一旦用户到达播放器中故事的末尾,它也将自动禁用。

<amp-story-player>
 <script type="application/json">
   {
     "controls": [
       {
         "name": "skip-to-next"
       }
     ],
   }
 </script>
 ...
</amp-story-player>

播放器的跳到下一个控件

示例 3 - 更改关闭按钮的图标

<amp-story-player>
 <script type="application/json">
   {
     "controls": [
       {
         "name": "close",
         "backgroundImageUrl": "data:image\/svg+xml;charset=utf-8,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.77778 9.33333H4V4H9.33333V5.77778H5.77778V9.33333ZM4 14.6667H5.77778V18.2222H9.33333V20H4V14.6667ZM18.2222 18.2222H14.6667V20H20V14.6667H18.2222V18.2222ZM14.6667 5.77778V4H20V9.33333H18.2222V5.77778H14.6667Z\" fill=\"white\"\/><\/svg>",
         "position": "start"
       }
     ]
   }
 </script>
 ...
</amp-story-player>

具有自定义图标的播放器的关闭控件

修改行为

有许多选项可用于自定义播放器的行为。请阅读以下部分,以了解您可以执行的操作。

循环环绕

如果您希望您的用户在完成最后一个故事后返回到第一个故事,则可以启用循环环绕选项

在后台倒回故事

如果您想回放用户在播放器中已观看过的故事,可以使用 rewind() API

程序化导航

您可以通过编程方式在播放器中的故事和页面之间导航。如果您想在播放器外部创建自己的导航按钮,或者想根据事件(例如)在页面之间切换,这将非常有用。为此,请使用 go()show() API 及其变体。

优化性能和 SEO

播放器会在后台执行许多操作,以确保在任何给定时刻仅使用所需的资源。尽管如此,您仍然可以做一些事情来确保在使用播放器时您的网站性能良好。

对于首屏上方的播放器

如果您希望将故事嵌入首屏(网页的上半部分;无需向下滚动即可见),我们建议等到用户互动后再加载并播放第一个故事。为此,请按照以下步骤操作

  1. 使用 JSON 配置禁用自动播放。
  2. 添加一个用户交互,这将开始播放故事。
  3. 当检测到用户交互时,使用播放器 API 调用 play()。

对于首屏下方的播放器

首屏下方的播放器会自动针对性能进行优化,并且仅预加载第一个故事,直到检测到滚动。一旦播放器在视口中可见,故事将开始播放。