跳到主要内容

给不同用户展示不同信息

我们将带领你使用FeatureProbe的平台创建一个按用户特性控制的开关。然后我们编写一个后端程序,验证后端程序拿不同的用户信息请求FeatureProbe SDK,会拿到不同的结果。

假定我们要实现以下场景:

  • 对于『上海』的『钻石』用户,显示『欢迎上海的尊贵客户』
  • 对于『北京』的用户(不区分级别),显示『欢迎北京的客户』
  • 对于不满足以上两点的用户,显示『欢迎』

在平台创建开关

  1. 登录我们提供的FeatureProbe演示平台,如果是第一次登录,请输入邮箱。后续可以继续使用你的邮箱访问到属于你的数据。
  2. 点击+开关新建一个开关
  • 填入名称和标识
  • 选择string类型作为返回值
  • 添加3个分组,分别将名称和值填入,值就是我们要返回的三个不同的提示语
  • 选择当开关未生效时的默认返回的分组
  • 点击创建并发布

create toggle

  1. 点击进入新创建的tutorial_variation开关的详情页面
  • 点击+ 增加规则
  • 规则中增加两个条件,city是上海,以及rank是钻石
  • 返回值选择为variation1(即值为:欢迎上海的尊贵客户)

rule one

  • 再次点击+ 增加规则
  • 规则中增加条件,city是北京,返回值选择为variation2

rule two

  • 默认规则的返回值选择为variation3

default

  • 开关状态改为生效,点击下方发布

publish

  • 点击确认,发布开关。

confirm

  1. 此时应当看到发布成功的提示

publish success

在平台的操作到这里就结束了,开关已经创建成功,并且可以访问了。下面我们介绍怎么在程序中通过SDK拿到这些配置值。

控制后端程序

我们提供一个后端的代码示例,你可以从这里开始体验后端代码如何使用开关。

编写代码

  1. 按你熟悉的语言,下载并打开相应的后端示例代码
git clone https://gitee.com/FeatureProbe/server-sdk-java.git
cd server-sdk-java

用编辑器打开src/main/java/com/featureprobe/sdk/example/FeatureProbeDemo.java文件。

  1. 打开FeatureProbe平台项目列表页面, 可以在开关详情页点击服务来打开 project
  2. 复制服务端SDK密钥sdk key
  3. 服务端SDK密钥以及FeatureProbe网址 ("https://featureprobe.io/server") 填入后端代码相应变量中
src/main/java/com/featureprobe/sdk/example/FeatureProbeDemo.java
    private static final String FEATURE_PROBE_SERVER_URL = "https://featureprobe.io/server";
private static final String FEATURE_PROBE_SERVER_SDK_KEY = // 填入 服务端SDK密钥 ;
  1. 加入以下代码,模拟5个用户访问这个开关
    1. 上海的钻石用户
    2. 上海的黄金用户
    3. 北京的钻石用户
    4. 北京的黄金用户
    5. 天津的钻石用户
src/main/java/com/featureprobe/sdk/example/FeatureProbeDemo.java
    public static void main(String[] args) throws IOException {

Logger root = (Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.WARN);

final FPConfig config = FPConfig.builder()
.remoteUri(FEATURE_PROBE_SERVER_URL)
.build();

// Init FeatureProbe, share this FeatureProbe instance in your project.
final FeatureProbe fpClient = new FeatureProbe(FEATURE_PROBE_SERVER_SDK_KEY, config);

FPUser[] users = {
new FPUser().with("city", "上海").with("rank", "钻石"),
new FPUser().with("city", "上海").with("rank", "黄金"),
new FPUser().with("city", "北京").with("rank", "钻石"),
new FPUser().with("city", "北京").with("rank", "黄金"),
new FPUser().with("city", "天津").with("rank", "钻石"),
};

for (FPUser user:users) {
String greeting = fpClient.stringValue("tutorial_variation", user, "欢迎您");
System.out.println(greeting);
}

fpClient.close();
}
提示

用户的属性(例如:所在城市、帐号级别)需要开发者通过其他方式在业务代码中获取到,然后通过With方法传入FeatureProbe SDK。 SDK只负责将规则应用到这些用户上,SDK无法在内部自己推断出用户的属性。

  1. 运行编辑后的服务端程序
mvn package
java -jar ./target/server-sdk-java-1.4.0.jar

验证结果

从命令行log可以看到,对于以下五个测试用户

  1. 上海的钻石用户
  2. 上海的黄金用户
  3. 北京的钻石用户
  4. 北京的黄金用户
  5. 天津的钻石用户

应用了规则

  • 对于『上海』的『钻石』用户,显示『欢迎上海的尊贵客户』
  • 对于『北京』的用户(不区分级别),显示『欢迎北京的客户』
  • 对于不满足以上两点的用户,显示『欢迎』

之后,拿到了以下结果

欢迎上海的尊贵客户
欢迎
欢迎北京的客户
欢迎北京的客户
欢迎

可以更改代码,尝试更多用户属性组合,看看log中显示的结果是否符合条件。

控制前端程序

我们提供一个前端的js代码示例,你可以从这里开始体验前端代码如何使用开关。

编写代码

  1. 下载示例代码
git clone https://gitee.com/FeatureProbe/client-sdk-js.git
cd client-sdk-js
  1. 打开平台获取client sdk key
信息

点击『服务』Tab,可以进入『服务』列表,获取各类SDK key,以及修改服务和环境信息。

client sdk key

  1. 打开 example/index.html 填入 客户端SDK密钥 以及 FeatureProbe网址 ("https://featureprobe.io/server")
example/index.html
      const fpClient = new featureProbe.FeatureProbe({
remoteUrl: "https://featureprobe.io/server",
clientSdkKey: // Paste client sdk key here,
user,
refreshInterval: 5000,
});
  1. 模拟『上海』的『钻石』用户访问开关 tutorial_variation ,直接获取开关状态
example/index.html
  <script>
const user = new featureProbe.FPUser().with("city", "上海").with("rank", "钻石");
const fpClient = new featureProbe.FeatureProbe({
remoteUrl: "https://featureprobe.io/server",
clientSdkKey: // Paste client sdk key here,
user,
refreshInterval: 5000,
});

fpClient.start();
fpClient.on("ready", function() {
const stringValue = fpClient.stringValue("tutorial_variation", "欢迎");
document.getElementById("string-result").innerText = stringValue;
});
</script>

验证结果

浏览器打开 index.html , 可以看到对与当前这个『上海』的『钻石』用户,显示了『欢迎上海的尊贵客户』。

string type
FeatureProbe evaluation string type toggle result is : 欢迎上海的尊贵客户

可以回到 index.html 文件,然后更新 with 参数,看看返回值有什么差别。

example/index.html
const user = new featureProbe.FPUser().with("city", "北京").with("rank", "钻石");