重要提示:此文档不适用于您当前选择的格式故事!
amp-subscriptions
描述
实现订阅式访问协议。
必需脚本
<script async custom-element="amp-subscriptions" src="https://cdn.ampproject.org/v0/amp-subscriptions-0.1.js"></script>
用法
amp-subscriptions
组件实现订阅式访问/付费墙规则。
工作原理
- AMP 页面在 AMP 查看器中加载,某些部分使用属性隐藏。
- AMP 运行时调用所有已配置服务的授权端点。
- 如果所有服务都无法响应,将使用后备授权。
- AMP 运行时使用响应来隐藏或显示由属性定义的不同部分。
- 在向阅读器显示文档后,AMP 运行时会调用回访端点,发布者可以使用该端点更新倒计时表(已使用的免费查看次数)。
- 发布者可以在 AMP 文档中放置特定的操作,以便
- 启动他们自己的登录页面以验证阅读器的身份,并将阅读器在他们系统中的身份与AMP 阅读器 ID相关联
- 启动他们自己的订阅页面,以便阅读器购买新订阅
- 从供应商服务启动登录或订阅操作。
与 amp-access
的关系
amp-subscriptions
组件类似于amp-access
,并且在许多功能上都建立在 amp-access
的基础上。但是,它是访问/付费墙协议的更专业版本。一些关键区别在于
amp-subscriptions
授权端点类似于amp-access
授权端点,但其响应是严格定义和标准化的。- 您需要使用以下内容,而不是使用
amp-access
访问内容标记 中描述的amp-access-hide
和amp-access
属性subscription-section
来定义订阅者和非订阅者的内容部分。subscription-display
来显示基于与用户拥有的订阅无关的因素的元素。
amp-subscriptions
组件允许为页面配置多个供应商服务,以参与访问/付费墙决策。服务会并发执行,并根据哪个服务返回肯定的响应来确定优先级。- 允许 AMP 查看器根据与发布商的独立协议,为
amp-subscriptions
提供签名的授权响应作为访问证明。
由于标记的标准化、对多个提供商的支持以及改进的查看器支持,建议新的发布商和付费墙提供商实施使用 amp-subscriptions
。
AMP 阅读器 ID
为了帮助访问服务和用例,AMP Access 引入了阅读器 ID的概念。
阅读器 ID 为发布商提供了一种在不泄露任何个人信息的情况下识别阅读器的解决方案。这允许发布商跟踪文章查看次数并实施计量、付费墙和其他订阅服务。
阅读器 ID 是由 AMP 生态系统创建的匿名且唯一的 ID。它对于每个阅读器/发布商对都是唯一的 - 阅读器对于两个不同的发布商的识别是不同的。它是一个不可逆的 ID。它旨在本质上是随机的,并使用多种因素来实现这种不可预测性。阅读器 ID 包含在所有 AMP/发布商通信中,并且可以由发布商用来识别阅读器并将其映射到他们自己的身份系统。
阅读器 ID 在用户设备上构建,旨在长期存在。但是,它遵循正常的浏览器存储规则,包括隐身窗口的规则。阅读器 ID 的预期生命周期为两次使用之间 1 年,或者直到用户清除其 Cookie 为止。阅读器 ID 当前不在设备之间共享。
阅读器 ID 的构建方式与此处描述的用于构建 ExternalCID 的机制类似。阅读器 ID 的示例是 amp-OFsqR4pPKynymPyMmplPNMvxSTsNQob3TnK-oE3nwVT0clORaZ1rkeEz8xej-vV6
。
我们强烈建议使用阅读器 ID 而不是 Cookie 来识别阅读器,因为当从 CDN 加载 AMP 时,发布商 Cookie 被视为第三方 Cookie,并且可能会被浏览器阻止。但是,如果您想在 Cookie 可用的情况下依赖 Cookie,请确保将 Cookie 正确标记为跨域 Cookie。
配置
必须使用 JSON 配置来配置 amp-subscriptions
组件
属性 | 值 | 描述 |
---|---|---|
services | <array> of <object> | 此 array 必须包括 |
score | <object> | 如果未返回有效的授权,则确定选择哪个服务。 有关更多详细信息,请参阅服务评分因素。 |
fallbackEntitlement | <object> | 确定如果所有服务都无法响应授权请求,阅读器应具有的访问级别。 有关更多详细信息,请参阅后备授权。 |
以下是配置示例
<script type="application/json" id="amp-subscriptions"> { "services": [ { // Local service (required) "authorizationUrl": "https://pub.com/amp-authorisation?rid=READER_ID&url=SOURCE_URL", "pingbackUrl": "https://pub.com/amp-pingback?rid=READER_ID&url=SOURCE_URL", "actions": { "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL", "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL" } }, { // Vendor services (optional) "serviceId": "service.vendor.com" } ], "score": { "supportsViewer": 10, "isReadyToPay": 9 }, "fallbackEntitlement": { "source": "fallback", "granted": true, "grantReason": "SUBSCRIBER", "data": { "isLoggedIn": false } } } </script>
本地服务
本地服务由发布商提供,以控制和监视对文档的访问。
它使用以下属性进行配置
属性 | 值 | 描述 |
---|---|---|
type | “remote” 或 “iframe” | 默认值为“remote”。“iframe”模式允许将消息传递到发布商提供的 iframe,而不是通过对发布商提供的端点的 CORS 请求。 |
authorizationUrl | <URL> | 授权端点的 HTTPS URL。 |
pingbackUrl | <URL> | (可选)回访端点的 HTTPS URL。 |
pingbackAllEntitlements | <boolean> | (可选)是否将所有服务的授权发送到回访端点。 |
actions.login | <URL> | 登录页面的 HTTPS URL。 |
actions.subscribe | <URL> | 订阅页面的 HTTPS URL。 |
<URL> 值指定带有替换变量的 HTTPS URL。替换变量在下面的URL 变量部分中进行了更详细的介绍。
以下是“本地”服务配置的示例
<script type="application/json" id="amp-subscriptions"> { "services": [ { "authorizationUrl": "https://pub.com/amp-authorisation?rid=READER_ID&url=SOURCE_URL", "pingbackUrl": "https://pub.com/amp-pingback?rid=READER_ID&url=SOURCE_URL", "pingbackAllEntitlements": true, "actions":{ "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL", "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL" } }, ... ] } </script>
URL 变量
在配置各种端点的 URL 时,发布商可以使用替换变量。这些变量的完整列表在HTML URL 变量替换中定义。
amp-access
添加了以下特定于订阅的变量
变量 | 描述 |
---|---|
READER_ID | AMP 阅读器 ID。 |
AUTHDATA(field) | 可用于回访和登录 URL。它允许将授权响应中的任何字段作为 URL 参数传递。例如,AUTHDATA(data.isLoggedIn) |
RETURN_URL | AMP 运行时指定的返回 URL 的占位符,用于返回登录对话框。 |
此外,以下标准 URL 替换在此组件的上下文中很有用
SOURCE_URL | 此 AMP 文档的源 URL。如果文档是从 CDN 提供的,则 AMPDOC_URL 将是 CDN URL,而 SOURCE_URL 将是原始源 URL。 |
AMPDOC_URL | 此 AMP 文档的 URL。 |
CANONICAL_URL | 此 AMP 文档的规范 URL。 |
DOCUMENT_REFERRER | 引荐来源网址。 |
VIEWER | AMP 查看器的 URL。 |
RANDOM | 一个随机数。有助于避免浏览器缓存。 |
以下是一个 URL 扩展示例,其中包含阅读器 ID、规范 URL、引荐来源信息和随机缓存清除器
https://pub.com/amp-authorization? rid=READER_ID &url=CANONICAL_URL &ref=DOCUMENT_REFERRER &_=RANDOM
授权端点
授权是由发布商提供的,并由 AMP 运行时调用的端点。它是一个需要凭据的 CORS GET 端点。
授权端点必须实现 AMP 中的 CORS 安全性 中描述的安全协议。
授权端点返回授权对象,该对象可由 属性 用于隐藏或显示文档的不同部分。授权端点使用配置中的“authorizationUrl”属性指定。
授权端点返回的授权响应必须符合预定义的规范
属性 | 值 | 描述 |
---|---|---|
granted | <boolean> | 说明阅读器是否可以访问该文档。 |
grantReason | <string> | 允许访问该文档的原因,公认的原因有
|
data | <object> | 可用于模板渲染的自由格式数据,例如,与计量或文章计数相关的消息。有关更多详细信息,请参见 自定义内容。 |
以下是一个已订阅并登录其帐户的阅读器的响应示例
{ "granted": true, "grantReason": "SUBSCRIBER", "data" : { "isLoggedIn": true } }
以下是一个匿名阅读器已阅读 5 篇免费文章中的 4 篇的响应示例
{ "granted": true, "grantReason": "METERING", "data" : { "isLoggedIn": false, "articlesRead": 4, "articlesLeft": 1, "articleLimit": 5 } }
以下是一个匿名阅读器因已阅读 5 篇免费文章中的 5 篇而无法访问的响应示例
{ "granted": false, "data" : { "isLoggedIn": false, "articlesRead": 5, "articlesLeft": 0, "articleLimit": 5 } }
所有供应商服务都必须实现自己的授权端点,并符合 amp-subscriptions 响应格式。
登录页面
登录页面允许发布商验证阅读器身份,并将他们的身份与 AMP 阅读器 ID 相关联。登录页面将作为 操作 部分中所述的 "login"
操作的结果打开。
以下是一个登录页面 URL 的示例
{ "actions": { "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL", ... } }
该 URL 可以采用 URL 变量 部分中定义的任何参数。
订阅页面
订阅页面允许阅读器从发布商处购买订阅。订阅页面将作为 操作 部分中所述的 "subscribe"
操作的结果打开。
订阅页面 URL 的示例
{ "actions": { "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL", ... } }
该 URL 可以采用 URL 变量 部分中定义的任何参数。
回访端点
Pingback 是“本地”服务配置中提供的,由 AMP 运行时调用的端点。它是一个需要凭据的 CORS POST 端点。
注意: Pingback 端点必须实现 AMP 中的 CORS 安全性 中描述的安全协议。
当阅读器开始查看文档时,AMP 运行时会自动调用此端点。Pingback 的主要目标之一是供发布商更新计量信息。
示例请求
{ "service": "local", "granted": true, "grantReason": "METERING", "data": { "isLoggedIn": false, "articlesRead": 2, "articlesLeft": 3, "articleLimit": 5 } }
Pingback 是可选的。只有在指定“pingbackUrl”属性时才会启用它。
默认情况下,作为主体,pingback POST 请求接收由“获胜”授权端点返回的授权对象。但是,如果“本地”服务的配置包含 pingbackAllEntitlements: true
,则主体将包含从所有服务收到的所有授权的数组,包括那些未授予访问权限的授权。
重要提示: pingback JSON 对象以 Content-type: text/plain
发送。这是有意为之,因为它消除了对 CORS 预检检查的需要。
将 AMP 阅读器 ID 与发布商 Cookie 结合使用
为了准确识别阅读器,发布商应将 AMP 阅读器 ID 与与阅读器相关的任何发布商 Cookie 相关联。
注意:由于创建 AMP 阅读器 ID 的方式,同一用户在不同的设备和浏览器上可能存在多个 AMP 阅读器 ID,因此发布商必须注意适当处理这种情况。
“iframe”模式
在“iframe”模式下,授权和 pingback 通过向发布商提供的 iframe 发送消息而不是向指定的授权和 pingback 端点发送 CORS 请求来提供。
在 iframe 模式下,authorzationUrl
和 pingbackUrl
将被删除并替换为
- "iframeSrc" - 发布商提供的 iframe
- "iframeVars - 要发送到 iframe 的 AMP 变量
- "type" - 必须为 "iframe"
“本地”服务在“iframe”模式下配置如下
<script type="application/json" id="amp-subscriptions"> { "services": [ { "type": "iframe", "iframeSrc": "https://...", "iframeVars": [ "READER_ID", "CANONICAL_URL", "AMPDOC_URL", "SOURCE_URL", "DOCUMENT_REFERRER" ], "actions":{ "login": "https://...", "subscribe": "https://..." } }, ... ] } </script>
“本地”服务中的属性是(远程模式)
- "type" - 可选类型,默认为“remote”
- "authorizationUrl" - 授权端点 URL。
- "pingbackUrl" - pingback 端点 URL。
- "actions" - 已命名操作 URL 映射。至少必须指定两个操作:“login”和“subscribe”。
在 iframe 模式下,authorizationUrl
和 pingbackUrl
将被删除并替换为
- "iframeSrc" - 发布商提供的 iframe
- "iframeVars - 要发送到 iframe 的 AMP 变量
- "type" - 必须为 "iframe"
有关消息协议的详细信息,请参见 amp-access-iframe。
供应商服务
供应商服务配置必须引用 serviceId
,并且可以包含供应商服务允许的任何其他属性。
<script type="application/json" id="amp-subscriptions"> { "services": [ { // Local service definition }, { "serviceId": "service.vendor.com" } ] } </script>
有关详细信息,请参见供应商服务的文档。
可用的供应商服务
服务评分因素
如果没有任何服务返回授予访问权限的授权,则通过计算每个服务的得分来比较所有服务,并选择得分最高的服务。每个服务都有一个 "baseScore"
(默认为 0)。任何服务配置中的 baseScore
键中的值 < 100 表示该服务的初始得分。如果未指定 baseScore
,则默认值为 0
。
得分的计算方法是,取服务的 baseScore
,加上从 score[factorName]
配置动态计算出的权重,再乘以每个服务为该 factorName
返回的值。服务可能会为其支持的因素返回 [-1..1] 之间的值。如果服务不知道某个因素或不支持该因素,则将返回 0
。
如果发布商希望忽略某个得分因素,他们可以将其值显式设置为 0
,或者将其从 score
映射中省略。
可用评分因素
- 当服务可以与此页面视图的当前 AMP 查看器环境配合使用时,
supportsViewer
返回1
。 - 当服务已知该用户并且该服务具有允许无需输入付款详细信息即可进行购买的付款方式时,
isReadyToPay
返回1
。
所有评分因素的默认值为 0
。如果出现平局,则本地服务获胜。
注意: 如果你想在特定查看器的上下文中测试文档的行为,可以添加 #viewerUrl=
片段参数。例如,#viewerUrl=https://www.google.com
将模拟 Google 查看器内部文档的行为。
后备授权
如果所有配置的服务都无法获取授权,则将使用 fallbackEntitlement
部分下配置的授权作为 local
服务的备用授权。文档会根据此备用授权解除阻止。
示例备用授权
{ "fallbackEntitlement": { "source": "fallback", "granted": true, "grantReason": "SUBSCRIBER", "data": { "isLoggedIn": false } } }
结构化数据标记
amp-subscriptions
依赖于 Schema.org 页面级配置的两个主要属性
- 必须授予用户才能查看内容的产品 ID:
productID
。 - 此内容此时是否需要此产品:
isAccessibleForFree
。
可用的配置将提供具有 isAccessibleForFree
属性的 NewsArticle
类型项目,以及指定 productID
的 Product
类型子项目。一旦找到 productID
和 isAccessibleForFree
,就会解析该配置。因此,建议将配置尽可能放在 DOM 树的较高位置。
支持 JSON-LD 和微数据格式。
有关标记的更多详细信息,请参见 此处。
示例
在这些示例中
- 产品 ID 为“norcal_tribune.com:basic”(
"productID": "norcal_tribune.com:basic"
)。 - 此文档当前已锁定(
"isAccessibleForFree": false
)。
以下是使用 JSON-LD 的标记示例
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "NewsArticle", "isAccessibleForFree": false, "publisher": { "@type": "Organization", "name": "The Norcal Tribune" }, "hasPart": {...}, "isPartOf": { "@type": ["CreativeWork", "Product"], "name" : "The Norcal Tribune", "productID": "norcal_tribune.com:basic" } } </script>
以下是使用微数据的标记示例
<div itemscope itemtype="http://schema.org/NewsArticle"> <meta itemprop="isAccessibleForFree" content="false" /> <div itemprop="isPartOf" itemscope itemtype="http://schema.org/CreativeWork http://schema.org/Product" > <meta itemprop="name" content="The Norcal Tribune" /> <meta itemprop="productID" content="norcal_tribute.com:basic" /> </div> </div>
属性
subscription-action
为了向阅读器呈现特定的体验,发布商提供了在“操作”配置中声明的特定操作,并且可以使用 subscriptions-action
属性进行标记。
可用值
例如,此按钮将执行“subscribe”操作
<button subscriptions-action="subscribe" subscriptions-display="EXPR"> Subscribe now </button>
默认情况下,操作是隐藏的,必须使用 subscriptions-display
表达式显式显示。
subscription-service
在标记中,可以将操作委托给其他服务以执行操作。这可以通过指定 subscriptions-service
属性来实现。
可用值
local
:这将强制local
服务用于特定操作。{serviceId}
(例如,subscribe.google.com
):这将强制使用 ID 为serviceId
的服务来执行特定操作。
例如,此按钮将从 subscribe.google.com
服务显示订阅页面,而不管服务评分因素如何
<button subscriptions-action="subscribe" subscriptions-service="subscribe.google.com" > Subscribe </button>
subscription-decorate
除了将操作委托给其他服务之外,还可以要求其他服务修饰元素。只需添加属性 subsciptions-decorate
即可修饰元素。
<button subscriptions-decorate subscriptions-action="subscribe" subscriptions-service="subscribe.google.com" > Subscribe </button>
subscriptions-section
高级部分会根据授权/授权响应自动显示/隐藏。
可用值
content
:用于封装高级内容。content-not-granted
:用于强制local
服务用于特定操作。
例如,您应该在 content
部分中包含高级文章内容,并在 content-not-granted
部分中包含任何备用内容
<!-- Include non-subscriber's content in here --> <section subscriptions-section="content-not-granted"> You are not allowed to currently view this content. </section> <!-- Include subscriber's content in here --> <section subscriptions-section="content"> This content will be hidden unless the reader is authorized. </section>
重要提示: 不要将 subscriptions-section="content"
应用于整个页面。这样做可能会导致内容稍后显示时出现可见的闪烁,并可能阻止搜索引擎索引您的页面。我们建议允许第一个视口中的内容呈现,而不管订阅状态如何。
subscriptions-display
除了显示/隐藏高级和备用内容外,还有更多方法可以使用 subscriptions-display
属性自定义文档,该属性使用表达式进行操作和对话框。subscriptions-display
的值是一个用类 SQL 语言定义的布尔表达式。语法在 amp-access 附录 A 中定义。
授权响应的 data
对象中的值可用于构建表达式。在此示例中,isLoggedIn
的值在 data
对象中,并用于有条件地显示用于登录和升级帐户的 UI
<section> <button subscriptions-action="login" subscriptions-display="NOT data.isLoggedIn" > Login </button> <div subscriptions-actions subscriptions-display="data.isLoggedIn"> <div>My Account</div> <div>Sign out</div> </div> <div subscriptions-actions subscriptions-display="data.isLoggedIn AND NOT grantReason = 'SUBSCRIBER'" > <a href="...">Upgrade your account</a> </div> </section>
重要提示: 不要使用 data
来授予/拒绝访问内容,基于用户访问有条件地显示内容,或显示与用户或帐户相关的信息。
使用评分自定义内容
每个配置的服务返回的评分因素可用于控制对话框中内容的显示。例如,factors['subscribe.google.com'].isReadyToPay
将是来自 subscribe.google.com
服务(也称为 amp-subscriptions-google
)的“准备付款”评分因素。类似地,factors['local'].isReadyToPay
将用于本地服务,而 scores['subscribe.google.com'].supportsViewer
将是 Google 服务支持当前查看器的评分因素。
示例用法
<!-- Shows a Subscribe with Google button if the user is ready to pay --> <button subscriptions-display="factors['subscribe.google.com'].isReadyToPay" subscriptions-action="subscribe" subscriptions-service="subscribe.google.com" subscriptions-decorate > Subscribe with Google </button>
subscriptions-dialog
付费墙对话框会根据授权/权利响应自动显示。
对话框使用 subscriptions-dialog
和 subscriptions-display
属性进行标记。
<div subscriptions-dialog subscriptions-display="EXPR"> This content will be shown as a dialog when "subscription-display" expression matches. </div>
指定 subscriptions-dialog
对话框的元素也可以是一个 <template>
元素,在这种情况下,它将在显示为对话框之前先进行初始渲染。例如:
<template type="amp-mustache" subscriptions-dialog subscriptions-display="NOT granted"> <!-- Customise the experience for the user using the `data` object returned in the authorization response --> <!-- Do NOT use the `data` object to show or hide premium content as this is not always returned --> {{^data.articlesRead}} <p> You have read all of your free articles! </p> {{/data.articlesRead}}{{#data.articlesRead}} <p> You have read <b>{{data.articlesRead}}</b> articles. </p> {{/data.articlesRead}}{{#data.articlesLeft}} <p> You have <b>{{data.articlesLeft}}</b> free articles left! </p> {{/data.articlesLeft}} <button subscriptions-action="subscribe" subscriptions-service="local" subscriptions-display="true"> Subscribe </button> <section subscriptions-display="NOT granted AND NOT data.isLoggedIn"> <button subscriptions-action="login" subscriptions-service="local" subscriptions-display="NOT granted AND NOT data.isLoggedIn"> Already subscribed? </button> </template>
将显示第一个具有匹配 subscriptions-display
的对话框。
操作
操作在 "local"
服务的配置中的 "actions"
属性中提供。它是一组命名的操作。可以以这种方式配置任意数量的操作,但需要两个操作:"login"
和 "subscribe"
。
所有操作的工作方式相同:为指定的 URL 打开弹出窗口。在弹出窗口中打开的页面可以执行目标操作,例如登录/订阅/等等,并且它应该通过重定向到由 "return"
查询参数指定的 URL 来返回。
请注意,虽然没有明确显示,但任何供应商服务也可以实现其自己的操作。或者它可以委托给 "login"
服务来执行 "login"
或 "subscribe"
操作。
示例操作配置
"actions":{ "login": "https://pub.com/amp-login?rid=READER_ID&url=SOURCE_URL", "subscribe": "https://pub.com/amp-subscribe?rid=READER_ID&url=SOURCE_URL" }
登录
login
操作流程如下:
- 向以下格式的指定 URL 发出请求
https://pub.com/amp-login? rid=READER_ID &url=SOURCE_URL &return=RETURN_URL
**Note:** the "return" URL parameter is added by the AMP Runtime automatically if `RETURN_URL` substitution is not specified.
- 登录页面将作为普通的网页打开,没有特殊的约束,但它应该作为 浏览器对话框 运行良好。
- 一旦发布者验证了阅读器的身份,发布者应将发布者 cookie 与 AMP 阅读器 ID 相关联,如将 AMP 阅读器 ID 与发布者 Cookie 结合使用部分所述。
- 登录页面完成其工作后,必须使用以下格式重定向回指定的“返回 URL”
RETURN_URL#success=true|false
Notice the use of a URL hash parameter `success`. The value is either `true` or `false` depending on whether the login succeeds or is abandoned. Ideally the Login page, when possible, will send the signal in cases of both success or failure.
- 如果返回
success=true
信号,AMP 运行时将重复调用授权和回传端点,以更新文档状态并报告具有新访问配置文件的“视图”。
当读者单击带有 subscriptions-action="login"
属性的按钮时,将触发 login
操作。例如:
<button subscriptions-action="login"> Already subscribed? Login now </button>
订阅
subscribe
流程如下:
- 向以下格式的指定 URL 发出请求
https://pub.com/amp-subscribe? rid=READER_ID &url=SOURCE_URL &return=RETURN_URL
**Note:** the "return" URL parameter is added by the AMP Runtime automatically if `RETURN_URL` substitution is not specified.
- 订阅页面将作为普通的网页打开,没有特殊的约束,但它应该作为 浏览器对话框 运行良好。
- 订阅页面完成其工作后,必须使用以下格式重定向回指定的“返回 URL”
RETURN_URL#success=true|false
Notice the use of a URL hash parameter `success`. The value is either `true` or `false` depending on whether the login succeeds or is abandoned. Ideally the Subscribe page, when possible, will send the signal in cases of both success or failure.
- 如果返回
success=true
信号,AMP 运行时将重复调用授权和回传端点,以更新文档状态并报告具有新访问配置文件的“视图”。
当读者单击带有 subscriptions-action="subscribe"
属性的按钮时,将触发 subscribe
操作。例如:
<button subscriptions-action="subscribe"> Subscribe now </button>
分析
amp-subscriptions
组件触发以下分析信号:
subscriptions-started
- 当
amp-subscriptions
初始化时触发。 - 数据:无。
subscriptions-service-registered
- 当
amp-subscriptions
能够解析服务的实例时触发。服务可以随时在页面上初始化自身。 - 数据:所选服务的
serviceId
。
subscriptions-service-activated
- 当选择并激活配置的服务以供使用时触发。请参阅服务评分因素。
- 数据:所选服务的
serviceId
。
subscriptions-entitlement-resolved
- 当服务的权利获取完成时触发。
- 数据:所选服务的
serviceId
和action
。
subscriptions-access-granted
- 当所选服务的权利授予对文档的访问权限时触发。
- 数据:所选服务的
serviceId
。
subscriptions-paywall-activated
- 当所选服务的权利未授予对文档的访问权限时触发。
- 数据:所选服务的
serviceId
。
subscriptions-access-denied
- 当所选服务的权利拒绝访问文档时触发。
- 数据:所选服务的
serviceId
。
subscriptions-service-re-authorized
- 当服务重新授权完成时触发。服务可以在执行任何操作(例如,
login
)后请求重新授权。重新授权完成后,将为该服务获取新的权利。 - 数据:所选服务的
serviceId
。
subscriptions-action-delegated
- 在委托的服务操作被移交给其他服务之前触发。请参阅
[subscription-service][15]
。 - 数据:所选服务的
serviceId
和委托的action
。
subscriptions-action-ActionName-started
- 当操作
ActionName
的执行开始时触发。 - 数据:无。
subscriptions-action-ActionName-failed
- 当由于任何原因导致操作
ActionName
的执行失败时触发。 - 数据:无。
subscriptions-action-ActionName-success
- 当操作
ActionName
的执行结果报告为成功时触发。 - 数据:无。
subscriptions-action-ActionName-rejected
- 当操作
ActionName
的执行结果报告为失败时触发。 - 数据:无。
subscriptions-link-requested
- 当所选服务启动订阅帐户链接请求时触发。
- 数据:所选服务的
serviceId
。
subscriptions-link-complete
- 当所选服务完成订阅帐户链接时触发。
- 数据:所选服务的
serviceId
。
subscriptions-link-canceled
- 当所选服务启动的订阅帐户链接请求被取消时触发。
- 数据:所选服务的
serviceId
。
您已经阅读过本文档十几次了,但它并没有真正涵盖您的所有问题?也许其他人也有同样的感受:请在 Stack Overflow 上联系他们。
前往 Stack Overflow 发现错误或缺少功能?AMP 项目强烈鼓励您的参与和贡献!我们希望您成为我们开源社区的持续参与者,但也欢迎您为自己特别关注的问题做出一次性贡献。
前往 GitHub