跳过主要内容
教程

如何使用__CAPGO_KEEP_0__的频道进行特征标志和A/B测试

Learn how to use Capgo's channels for feature flags and A/B testing by self-assigning users or using your backend.

马丁·多纳迪

作者

瓦莱里亚

审稿人

Reviewer

Jordan

Editor

如何使用频道进行特性标志和A/B测试

如何使用频道进行特性标志和A/B测试

{'text': 'Capgo’s channel system provides a flexible way to segment users and control feature access. While Capgo doesn’t have built-in plan management or A/B testing, you can implement these features by managing channel assignments yourself.', 'target': 'Capgo的通道系统提供了一个灵活的方式来分段用户并控制功能访问。虽然Capgo没有内置的计划管理或A/B测试功能,但您可以通过管理通道分配来实现这些功能。'}

{'text': 'Understanding Channels', 'target': '了解通道'}

{'text': 'Channels in Capgo allow you to:', 'target': 'Capgo中的通道允许您:'}

  • 针对不同用户群提供特定功能
  • 在不同频道中分配用户并进行A/B测试
  • {'text': 'Gradually roll out new features', 'target': '逐步推出新功能'}
  • {'text': 'Create beta testing programs', 'target': '创建beta测试计划'}

{'text': 'Channel Assignment Methods', 'target': '通道分配方法'}

这种方法更安全。它涉及:

  1. 从更新器获取设备 ID
  2. 将其发送到您的后端
  3. 您的后端调用 Capgo API 来分配设备

以下是如何实现它:

import { CapacitorUpdater } from '@capgo/capacitor-updater'

// Get device ID
const getDeviceId = async () => {
  const { deviceId } = await CapacitorUpdater.getDeviceId()
  return deviceId
}

// Send device ID to your backend
const assignToChannel = async (channel: string) => {
  const deviceId = await getDeviceId()
  // Your backend will call Capgo API to assign the device
  await yourBackend.assignDeviceToChannel(deviceId, channel)
}

后端实现

您的后端需要:

  1. 从 API Capgo 获取一个 API 密钥
  2. 调用 Capgo API 将设备分配到一个频道

获取您的 API 密钥:

  1. 登录您的 Capgo 控制台
  2. 前往设置 > API 密钥
  3. 点击“生成新密钥”
  4. 选择 all 模式来管理设备和频道
  5. 复制生成的密钥并在您的后端环境变量中安全存储
    • 密钥将是一个 32 个字符的十六进制字符串
    • 它是一个秘密密钥,绝对不能在客户端的 code 中暴露

以下是 Node.js 的示例:

import axios from 'axios'

const CAPGO_API_KEY = 'your_api_key'
const CAPGO_API_URL = 'https://api.capgo.app'

async function assignDeviceToChannel(deviceId: string, channel: string) {
  try {
    const response = await axios.post(
      `${CAPGO_API_URL}/device`,
      {
        app_id: 'YOUR_APP_ID',
        device_id: deviceId,
        channel: channel
      },
      {
        headers: {
          'authorization': CAPGO_API_KEY,
          'Content-Type': 'application/json'
        }
      }
    )
    return response.data
  } catch (error) {
    console.error('Failed to assign device to channel:', error)
    throw error
  }
}

后端也应该:

  • 验证用户的权限
  • 记录所有频道分配
  • 处理速率限制
  • 重试失败的分配

2. 自动分配(较不安全)

本方法允许设备直接将自己分配到一个频道。它对于测试有用,但在生产环境中不太安全。

import { CapacitorUpdater } from '@capgo/capacitor-updater'

// Assign device to channel
const assignToChannel = async (channel: string) => {
  await CapacitorUpdater.setChannel(channel)
}

// Get current channel
const getCurrentChannel = async () => {
  const { channel } = await CapacitorUpdater.getChannel()
  return channel
}

在您允许用户自行分配到频道之前,您需要在Capgo控制台中启用此功能。

  1. 前往您的Capgo控制台中的频道部分
  2. 点击您要管理的频道名称
  3. 在频道设置中,启用“允许设备自行关联”
  4. 保存更改

如果此设置为 false,任何尝试调用 setChannel 将会失败。

实现特性标志

使用频道来控制特性访问:

const isFeatureEnabled = async (feature: string) => {
  // Example: Check if user is in beta channel
  const channel = await getCurrentChannel()
  return channel === 'beta'
}

A/B Testing 实施

通过分配用户到不同的频道来运行A/B测试:

const assignToABTest = async (userId: string) => {
  // Use consistent hashing to assign users
  const hash = await hashUserId(userId)
  const variant = hash % 2 === 0 ? 'variant-a' : 'variant-b'
  
  await assignToChannel(variant)
  return variant
}

最佳实践

  1. 使用后端分配:生产环境中始终使用后端分配方法
  2. 一致分配:使用用户ID或其他稳定的标识符进行一致的频道分配
  3. 监控:跟踪每个频道的功能使用和性能指标
  4. 渐进式发布:从小用户组开始,逐渐扩大
  5. 清晰的文档: 记录你的频道策略和目的

结论

通过利用Capgo的频道系统,您可以创建更具个人化的应用体验并进行A/B测试。对于生产环境,始终优先使用后端分配方法以获得更好的安全性和控制。

有关频道管理的更多详细信息,请参阅我们的 频道文档.

继续阅读《如何使用频道进行功能标志和A/B测试》

如果您正在使用 《如何使用频道进行功能标志和A/B测试》 来规划频道路由和阶段性发布,连接它与 频道 为 Channels 中的实现细节 频道 为 Channels 的实现细节 Channels 为 Channels 的实现细节 测试版发布解决方案 为测试版发布解决方案中的产品工作流程 版本目标解决方案 为版本目标解决方案中的产品工作流程

Live updates for Capacitor apps

当web层bug处于活跃状态时,通过Capgo将修复推送给用户,而不是等待几天的应用商店审批。用户在后台接收更新,而原生更改仍在正常审批路径中。

最新博客

Capgo为您提供创建真正专业的移动应用所需的最佳见解。