跳到内容

功能开关(Feature flags)

功能开关(feature flag)是应用或网站中某项功能的开/关切换。您在 Control Panel 中切换它,无需发布新版本。

您可以为每个开关选择谁能获得该功能:某个细分中的用户、所有用户中的一定比例,或两者兼有。例如,先向 10% 的用户展示新界面,然后再提高比例。如果出现问题,您可以使用 对所有人关停 按钮为所有人关闭该功能。开关还可以携带属性,例如按钮颜色或折扣上限,您可以按受众分别设置。

开始之前

Anchor link to
  • 套餐: 功能开关仅在包含该功能的套餐中可用。在其他套餐中,受众 菜单中不会显示 功能开关。如需开通,请联系您的客户经理。
  • 访问权限: 功能开关 会出现在您可以查看的每个应用中。要创建和更改开关,您需要 修改应用 权限,或在该应用的应用特定权限中拥有相同权限。
  • 开发者设置: 只有当您的开发者在应用或网站代码中通过键读取开关后,开关才会对用户生效。他们需要 Web SDK 3.94.1 或更高版本、Android SDK 6.16.0 或更高版本,或 iOS SDK 7.2.10 或更高版本。在尚无开关的应用中,功能开关 页面会显示适用于 Web、Android 和 iOS 的现成代码示例。请将它们连同开关的键一起交给您的开发者。请将 Web SDK 指南、Android SDK 指南或 iOS SDK 指南分享给他们。

如果您的套餐不再包含功能开关,设备将不再接收开关,您的应用或网站将使用代码中设置的值。此时创建或恢复开关会失败,并显示消息 您的套餐不支持功能开关,例如在套餐变更前已打开的 Control Panel 标签页中。

开关如何决定每个用户获得什么

Anchor link to

每个开关都有一个规则列表。每条规则包含一个细分、为其开启开关的用户比例(灰度比例,%)以及可选的属性值。对于每台设备,Pushwoosh 会从上到下检查规则:

  1. 设备匹配其细分的第一条规则起决定作用。没有细分的规则匹配所有设备。
  2. 规则的 灰度比例,% 决定该用户是否开启开关。设为 20% 时,每十个用户中有两个开启。
  3. 开启开关的用户会获得该规则中设置的属性值。关闭开关的用户会获得默认属性值。

设备一旦匹配某条规则,后续规则就会被跳过,即使该规则为它关闭了开关。不匹配任何规则的设备,开关为关闭。

用户每次访问都会得到相同的结果。使用相同 User ID 登录的设备在匹配同一条规则时会得到相同的结果,因为 Pushwoosh 会针对每台设备检查细分。Pushwoosh 通过 User ID 识别用户,未设置 User ID 时则通过设备 ID 识别。当您提高比例时,已开启开关的用户会保留它,新用户会加入他们。

创建开关

Anchor link to
  1. 前往 受众 → 功能开关。

  2. 点击 创建功能开关。

    应用的功能开关页面,Create feature flag 按钮已高亮,SDK support 区块列出 Web、Android 和 iOS
  3. 输入 键,例如 new_checkout。键可以是您选择的任意名称,但您的开发者会在代码中按这个完全相同的键(包括大小写)读取开关。请在保存开关之前与他们商定。

  4. 输入 名称,并可选填写 描述,以便您的团队了解该开关控制什么。

键须遵循以下规则:

  • 拉丁字母、数字、_、. 和 -,最多 58 个字符。
  • 键在之后无法更改。
  • 您不能重复使用该应用中另一个开关(即使已归档)已使用的键,也不能使用仅大小写不同的键,例如 New_Checkout 和 new_checkout。

添加属性

Anchor link to

属性是应用或网站从开关中读取的值,例如横幅文本或推荐区块中的商品数量。如果开关只用于开启和关闭某项功能,请跳过此步骤。

  1. 在 属性 中,点击 添加属性。
  2. 输入 属性键,例如 button_color。使用拉丁字母、数字和 _,最多 64 个字符。属性键可以是您选择的任意名称,但您的开发者会在代码中按这个完全相同的键(包括大小写)读取该值。请在保存开关之前与他们商定。
  3. 选择类型:字符串、数字、布尔值 或 JSON。保存开关后无法更改类型。
  4. 输入 默认值。关闭开关的用户会获得此值。

一个开关最多可以有 50 个属性。

功能开关表单,包含键、名称、描述和两个属性:String 类型的 button_color 和 Boolean 类型的 show_apple_pay

添加规则

Anchor link to
  1. 在 规则 中,点击 添加规则。
  2. 输入 规则名称,例如 Paying customers。
  3. 在 分群 中,选择规则适用的对象。留空则规则适用于所有用户。
  4. 在 灰度比例,% 中,输入该细分中开启开关的用户比例,范围为 0 到 100,最多两位小数。
  5. 在 此规则为用户开启开关时使用的值 中,更改对这些用户应与默认值不同的属性。未更改的属性保留其默认值。
  6. 要添加其他受众,请重复上述步骤。使用 上移 和 下移 更改顺序,因为第一条匹配的规则起决定作用。

一个开关最多可以有 10 条规则。

在 灰度比例,% 下方,每条规则会显示它大约为多少台设备开启开关,例如 ≈ 1,200 台设备。Pushwoosh 将规则细分的大小乘以比例。对于没有细分的规则,则取该应用的所有设备。请将这个数字理解为该规则最多能触达的设备数,因为匹配了前面某条规则的设备会停在那条规则上。

功能开关的 Rule 1:针对 Purchased something 细分的 Paying customers,比例为 100%,button_color 设为 green,show_apple_pay 设为 true

例如,要为所有付费客户以及其他所有人中的 20% 提供新的结账流程,请创建两条规则:

规则细分灰度比例,%此规则为用户开启开关时使用的值
Paying customersPurchased something100button_color = green,show_apple_pay = true
Everyone else—20button_color = orange

保存开关

Anchor link to

点击 保存。开关创建后状态为 已启用,设备会在下次检查开关时接收它。

管理开关

Anchor link to

开关列表显示每个开关的名称、键、状态、规则数量和最后更新时间。要查看已归档的开关,请打开 显示已归档。要打开某个开关,请点击它的名称。列表顶部和每个开关页面顶部的 SDK 支持 区块会显示该应用中使用旧版 SDK 的设备所占比例(前提是这些设备上报了 SDK 版本)。在用户更新应用之前,这些设备不会获得开关。

开关有以下三种状态之一:

状态用户获得什么操作
已启用开关按其规则工作。重新打乱、对所有人关停、归档
已关停开关对所有用户关闭,使用默认属性值。规则和属性会保留。重新开启、归档
已归档设备不再接收该开关,因此代码使用您的开发者在其中设置的值。恢复

更改开关

Anchor link to
  1. 打开开关。
  2. 编辑名称、描述、属性或规则。
  3. 点击 保存。
  4. 如果您更改了规则或默认属性值,确认变更 对话框会列出设备将发生的变化。检查后点击 保存。

对话框中每项更改显示一行:

  • 规则的灰度比例: 大约有多少台设备新获得开关,或有多少台设备失去开关。
  • 规则的值: 大约有多少台设备获得新值,以及每个属性的旧值和新值。
  • 新增或删除的规则、不同的细分或新的规则顺序: 设备会移到哪里。例如,被删除规则的设备会移到下一条与其匹配的规则。
  • 默认值: 开关关闭的设备获得的旧值和新值。

仅更改名称或描述时,会直接保存,不显示该对话框。

要逐步推出功能,请分步提高规则的 灰度比例,%。

如果在您编辑期间其他人保存了该开关,Control Panel 不会覆盖他们的更改,并会要求您重新加载开关。点击 重新加载,然后重新进行更改。

为所有人关闭开关

Anchor link to

当某项功能引发问题、需要为所有人停用时,请使用 对所有人关停:

  1. 打开开关并点击 对所有人关停。

    活动功能开关页面顶部,带有 Reshuffle、Kill switch 和 Archive 按钮
  2. 确认。每台设备会在下次检查开关时获得关闭状态和默认属性值。

当您的网站或应用处于打开状态时,设备会在一小时内获得此更改。请参阅 Web SDK、Android SDK 和 iOS SDK 如何检查开关。

要按原有规则重新开启开关,请点击 重新开启。

选择不同的用户样本

Anchor link to

重新打乱会将每个用户放入新的分组,因此相同比例的用户由不同的人组成。当您需要新的样本时(例如开始新的测试)可以使用它。

  1. 打开一个活动开关并点击 重新打乱。
  2. 确认。部分已开启开关的用户会失去它,另一些用户会在其设备下次检查开关时获得它,而比例保持不变。

归档和恢复开关

Anchor link to

当功能已完全发布或已从代码中移除时,请归档开关。已归档的开关不计入您套餐中每个应用的开关数量上限,其键仍保持保留状态。

  1. 打开开关并点击 归档。
  2. 确认。

已归档的开关无法编辑。要恢复它,请在列表中打开 显示已归档,打开该开关,然后点击 恢复。恢复的开关状态为 已关停,因此不会自行触达用户。准备就绪后,点击 重新开启。

查看谁更改了开关

Anchor link to

变更历史显示开关的每个已保存版本:更改了什么、由谁更改以及何时更改。任何可以打开该开关的人都可以查看其历史。

历史记录从 2026 年 10 月 13 日起的更改开始记录。没有记录任何更改的开关会显示 暂无变更。对于在该日期之前创建的开关,最早的条目不显示更改列表,因为没有更早的版本可供比较。

  1. 打开开关。
  2. 点击 历史。

变更历史 面板按从新到旧的顺序列出开关的各个版本。每个条目显示:

  • 操作,例如 已编辑。
  • 更改者:用户的电子邮件,或进行更改所用的 API 令牌,例如 API 令牌“Release pipeline”,未命名的令牌则显示 API 令牌。
  • 日期和时间。
  • 版本号,例如 v4。
功能开关的变更历史面板,按从新到旧排列:操作、用户电子邮件或 API 令牌、日期和时间以及版本

要加载更早的条目,请点击 显示更多。

操作发生了什么
已创建开关已创建。
已编辑有人保存了对开关的更改。
发布比例已更改通过 API 或 MCP 服务器更改了某条规则的灰度比例。在 Control Panel 中,灰度比例的更改会记录为 已编辑。
已关闭有人点击了 对所有人关停。
已重新开启有人点击了 重新开启。
已归档开关已归档。
已恢复开关已从归档中恢复。
用户已重新分配有人点击了 重新打乱。

在每个条目下方,面板以更改前和更改后的值列出更改内容:名称、描述、状态、属性、规则顺序,以及每条新增、删除或更改的规则。对于更改的规则,只显示不同的字段:名称、细分、发布比例 或 值。没有细分的规则显示 所有用户。

按开关对用户进行细分

Anchor link to

细分中的功能开关条件可以找到开启了开关、关闭了开关、匹配了其某条规则,或到达了开关所控制的应用部分的设备。您可以用它向看到新功能的用户发送消息(例如征求反馈),或围绕他们构建 Journey。

  1. 打开细分构建器,如如何创建细分中所述。
  2. 在条件列表中点击 功能开关。
  3. 在 选择功能开关… 中选择开关。已归档的开关不在列表中。
  4. 选择状态:
    • 已开启:开启了开关的设备。
    • 已关闭:关闭了开关的设备。
    • 属于规则:匹配了某条规则细分的设备,无论该规则的 灰度比例,% 是否为它们开启了开关。在 选择规则… 中选择规则。
    • 看到过该功能(30 天):在过去 30 天内至少发送过一次该开关曝光的设备,即应用为此开关键调用了 logImpression。请参阅查找到达某项功能的用户。

功能开关 仅在包含功能开关的套餐中出现在细分构建器中。只能包含标签条件的 High Speed Delivery 细分不能使用它。

每种状态包含哪些设备

Anchor link to

设备的状态取决于它最近一次收到的开关以及开关的当前状态:

  • 从未请求过该开关的设备(例如其 SDK 不读取开关)不属于任何状态。
  • 在您更改规则或规则的 灰度比例,% 后,设备只有在再次请求开关时才会转入另一个状态。
  • 当您关停或归档开关时,已开启 和 属于规则 会在约 10 秒内变为空,无需等待设备再次请求开关。此时 已关闭 包含所有曾经获得过该开关的设备。

查找到达某项功能的用户

Anchor link to

要查找看到了已启用功能的用户:

  1. 为该开关添加 看到过该功能(30 天)。
  2. 为同一开关添加 已开启,并用 AND 连接这两个条件。

看到过该功能(30 天) 匹配到达了开关所控制的界面或代码的用户,无论开关对他们是开启还是关闭。因此需要添加 已开启:它只保留获得新版本的用户。结果接近但并不精确。已开启 反映的是设备最近一次获得的开关,而其曝光可能来自开关关闭时的早前访问。

如果应用不记录曝光,该细分将为空。要记录曝光,请参阅 Web SDK、Android SDK 或 iOS SDK 指南中的“Log impressions”部分。

关停或归档开关不会清空此状态。设备会在最后一次曝光 30 天后离开该状态。

在 Journey 中使用开关细分

Anchor link to

带有功能开关条件的细分可用于基于受众的进入和条件拆分。例如,将获得新结账流程的用户与未获得的用户分开,并向每组发送各自的消息。

保存开关时,Control Panel 和 API 会强制执行以下限制:

限制值
每个开关的规则数10
每个开关的属性数50
单个开关的属性大小(键、类型和默认值)10,000 字节
JSON 值的嵌套深度5 层
每个应用的开关数由您的套餐决定,已归档的开关不计入
单台设备为该应用所有开关接收的数据量64 KB

通过 API 管理开关

Anchor link to

您的开发者可以使用 Feature Flags API 从自己的系统中创建和更改开关,通过 Pushwoosh MCP 服务器连接的 AI 助手也可以使用相同的操作管理开关。