远程 CFR 消息

从 Firefox 68 开始,CFR 消息将使用 远程设置 进行定义。本文档将介绍如何设置开发环境。

使用开发服务器进行远程 CFR

注意:自 2021 年 11 月起,远程设置拥有一个合适的开发实例,无需 VPN 即可访问,但配置(openid、多注销等)和集合与 STAGE/PROD 相同。

1. 获取您的 Bearer 令牌

Bug 1630651 发生之前,获取 OpenID 凭据最简单的方法是使用管理员界面。

  1. 登录管理员 UI 使用您的 LDAP 身份

  2. 复制身份验证标头(顶部栏中的 📋 图标)

  3. 使用 curl 测试您的凭据。使用此 Bearer 令牌访问服务器根 URL 时,您应该会看到一个 user 条目,其 id 字段为 ldap:<you>@mozilla.com

SERVER=https://settings.dev.mozaws.net/v1
BEARER_TOKEN="Bearer uLdb-Yafefe....2Hyl5_w"

curl -s ${SERVER}/ -H "Authorization:${BEARER_TOKEN}" | jq .user

2. 创建/更新/删除 CFR 条目

也可以使用 管理员界面 手动创建消息。

在以下示例中,我们将使用 REST API 创建一个新条目(重用上一步中的 SERVERBEARER_TOKEN)。

CID=cfr

# post a message
curl -X POST ${SERVER}/buckets/main-workspace/collections/${CID}/records \
     -d '{"data":{"id":"PIN_TAB","template":"cfr_doorhanger","content":{"category":"cfrFeatures","bucket_id":"CFR_PIN_TAB","notification_text":{"string_id":"cfr-doorhanger-extension-notification"},"heading_text":{"string_id":"cfr-doorhanger-pintab-heading"},"info_icon":{"label":{"string_id":"cfr-doorhanger-extension-sumo-link"},"sumo_path":"extensionrecommendations"},"text":{"string_id":"cfr-doorhanger-pintab-description"},"descriptionDetails":{"steps":[{"string_id":"cfr-doorhanger-pintab-step1"},{"string_id":"cfr-doorhanger-pintab-step2"},{"string_id":"cfr-doorhanger-pintab-step3"}]},"buttons":{"primary":{"label":{"string_id":"cfr-doorhanger-pintab-ok-button"},"action":{"type":"PIN_CURRENT_TAB"}},"secondary":[{"label":{"string_id":"cfr-doorhanger-extension-cancel-button"},"action":{"type":"CANCEL"}},{"label":{"string_id":"cfr-doorhanger-extension-never-show-recommendation"}},{"label":{"string_id":"cfr-doorhanger-extension-manage-settings-button"},"action":{"type":"OPEN_PREFERENCES_PAGE","data":{"category":"general-cfrfeatures"}}}]}},"targeting":"locale == \"en-US\" && !hasPinnedTabs && recentVisits[.timestamp > (currentDate|date - 3600 * 1000 * 1)]|length >= 3","frequency":{"lifetime":3},"trigger":{"id":"frequentVisits","params":["docs.google.com","www.docs.google.com","calendar.google.com","messenger.com","www.messenger.com","web.whatsapp.com","mail.google.com","outlook.live.com","facebook.com","www.facebook.com","twitter.com","www.twitter.com","reddit.com","www.reddit.com","github.com","www.github.com","youtube.com","www.youtube.com","feedly.com","www.feedly.com","drive.google.com","amazon.com","www.amazon.com","messages.android.com"]}}}' \
     -H 'Content-Type:application/json' \
     -H "Authorization:${BEARER_TOKEN}"

集合已修改,并且工作区中现在有待处理的更改。我们现在将请求审查,以便更改在 **预览** 桶中可见。

# request review
curl -X PATCH ${SERVER}/buckets/main-workspace/collections/${CID} \
     -H 'Content-Type:application/json' \
     -d '{"data": {"status": "to-review"}}' \
     -H "Authorization:${BEARER_TOKEN}"

现在,此新记录应在此处列出:https://settings.dev.mozaws.net/v1/buckets/main-preview/collections/cfr/records

3. 设置远程设置首选项以使用开发服务器。

对开发环境的支持 添加到 远程设置开发工具 之前,我们将手动更改首选项。

这些是关键首选项,您应该使用专用的 Firefox 配置文件进行开发。

  Services.prefs.setCharPref("services.settings.loglevel", "debug");
  Services.prefs.setCharPref("services.settings.server", "https://settings.dev.mozaws.net/v1");
  // Pull data from the preview bucket.
  RemoteSettings.enablePreviewMode(true);

3. 设置 ASRouter CFR 首选项以使用远程设置提供程序并启用 asrouter 开发工具。

Services.prefs.setStringPref("browser.newtabpage.activity-stream.asrouter.providers.cfr", JSON.stringify({"id":"cfr-remote","enabled":true,"type":"remote-settings","collection":"cfr"}));
Services.prefs.setBoolPref("browser.newtabpage.activity-stream.asrouter.devtoolsEnabled", true);

4. 转到 about:asrouter 应该会列出一个“cfr-remote”提供程序。

使用暂存服务器进行远程 CFR

如果您的消息发布在暂存环境中,最简单的测试方法是使用 远程设置开发工具 附加组件。您可以通过转到 about:debugging 并使用 Load Temporary Addon 功能来安装此附加组件。开发工具允许您在生产和暂存之间切换配置文件,并负责正确切换所有必需的首选项。

远程 l10n

默认情况下,所有 CFR 消息都使用远程设置上 ms-language-packs 中托管的远程 Fluent 文件进行本地化。对于本地测试和开发,您可以通过翻转首选项 browser.newtabpage.activity-stream.asrouter.useRemoteL10n 来强制 ASRouter 使用本地 Fluent 文件。