确定方法

云眼About 6 min

确定方法

本主题概述了可用于在云眼灰度试验中为用户返回标帜决策的 decide 方法。

建议修改

使用 Decide 方法返回用户的标帜决策。标帜决策包括标帜启用/禁用状态和标帜变体。

本页介绍以下决策方法:

决定

版本

SDK 3.9 及更高版本

描述

返回用户的标帜键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标帜规则所需的所有数据。

Decide 是 UserContext 对象的一种方法。有关详细信息,请参阅 EyeofcloudUserContext

有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision

参数

下表描述了 Decide 方法的参数:

参数

类型

描述

旗键

字符串

灰度标帜的键

选项(可选)

数组

Array of EyeofcloudDecideOption enums.请参阅下表。

云眼决策选项

下表显示了云眼决策选项的详细信息。除了在 Decide 方法上单独设置这些选项外,还可以在实例化 Eyeofcloud 客户端时将它们设置为全局默认值。请参见初始化软件开发工具包

科特林Java

// set global default decide options when initializing the client var options: List<EyeofcloudDecideOption> options = Arrays.asList(EyeofcloudDecideOption.DISABLE_DECISION_EVENT) val eyeofcloudManager = EyeofcloudManager.builder() .withSDKKey("<YOUR_SDK_KEY>") .withDefaultDecideOptions(options) .build(context) // set additional options in a decide call val eyeofcloudClient = eyeofcloudManager.initialize(context, R.raw.datafile) val user = eyeofcloudClient.createUserContext("user123") options = Arrays.asList(EyeofcloudDecideOption.DISABLE_DECISION_EVENT, EyeofcloudDecideOption.DISABLE_DECISION_EVENT) val decisions = user!!.decideAll(options)

// set global default decide options when initializing the client List<EyeofcloudDecideOption> options; options = Arrays.asList(EyeofcloudDecideOption.DISABLE_DECISION_EVENT); EyeofcloudManager eyeofcloudManager = EyeofcloudManager.builder() .withSDKKey("<YOUR_SDK_KEY>") .withDefaultDecideOptions(options) .build(context); // set additional options in a decide call EyeofcloudClient eyeofcloudClient = eyeofcloudManager.initialize(context, R.raw.datafile); EyeofcloudUserContext user = eyeofcloudClient.createUserContext("user123"); options = Arrays.asList(EyeofcloudDecideOption.DISABLE_DECISION_EVENT, EyeofcloudDecideOption.DISABLE_DECISION_EVENT); Map<String, EyeofcloudDecision> decisions = user.decideAll(options);

云眼决策选项枚举

如果设置:

EyeofcloudDecideOption.DISABLE_DECISION_EVENT

防止访问者在仍获得变体的同时触发展示open in new window,这将禁止在 Eyeofcloud 应用程序的“结果”页面上open in new window显示 Decide 方法的结果。

此设置可能是为什么决策事件调度枚举在返回的 falseEyeofcloudDecisionopen in new window 对象或 DECIDE 通知侦听器有效负载。

EyeofcloudDecideOption.ENABLED_FLAGS_ONLY

仅返回已启用标帜的决策。此选项仅适用于确定多个标帜的方法,如 Decide All 方法。如果此选项无效,则忽略此选项。如果未设置此选项,SDK 将返回所有决策,无论是否启用该标帜。

EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE

设置后,SDK 会绕过 UPS(查找和保存)进行决策。

如果未设置此选项,UPS 将覆盖受众定位、流量分配和试验互斥组。

EyeofcloudDecideOption.INCLUDE_REASONS

在 EyeofcloudDecision 对象的“原因”字段中返回日志消息。请注意,与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。

EyeofcloudDecideOption.EXCLUDE_VARIABLES

从决策结果中排除标记变量值。使用此选项可通过跳过大型 JSON 变量来最小化返回的决策。

返回

方法返回一个云眼决策对象。有关更多信息,请参阅云眼决策

如果该方法遇到严重错误(SDK 未就绪、标帜键无效等),则它会返回带有空变体键字段的决策,并使用错误消息填充“原因”字段(无论“包括原因”选项如何)。

示例决策

下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:

科特林Java

// create the user and decide which flag rule & variation they bucket into val attributes: MutableMap<String, Any> = HashMap() attributes["logged_in"] = true val user = eyeofcloudClient.createUserContext("user123", attributes) val decision = user!!.decide("product_sort") // variation. if null, decision fail with a critical error val variationKey = decision.variationKey // flag enabled state: val enabled = decision.enabled // all variable values val variables = decision.variables // String variable value var vs: String? = null try { vs = variables.getValue("sort_method", String::class.java) } catch (e: JsonParseException) { e.printStackTrace() } // Boolean variable value val vb = variables.toMap()!!["k_boolean"] as Boolean? // flag key for which decision was made val flagKey = decision.flagKey // user for which the decision was made val userContext = decision.userContext // reasons for the decision val reasons = decision.reasons

// create the user and decide which flag rule & variation they bucket into Map<String, Object> attributes = new HashMap<>(); attributes.put("logged_in", true); EyeofcloudUserContext user = eyeofcloudClient.createUserContext("user123", attributes); EyeofcloudDecision decision = user.decide("product_sort"); // variation. if null, decision fail with a critical error String variationKey = decision.getVariationKey(); // flag enabled state: boolean enabled = decision.getEnabled(); // all variable values EyeofcloudJSON variables = decision.getVariables(); // String variable value String vs = null; try { vs = variables.getValue("sort_method", String.class); } catch (JsonParseException e) { e.printStackTrace(); } // Boolean variable value Boolean vb = (Boolean) variables.toMap().get("k_boolean"); // flag key for which decision was made String flagKey = decision.getFlagKey(); // user for which the decision was made EyeofcloudUserContext userContext = decision.getUserContext(); // reasons for the decision List<String> reasons = decision.getReasons();

副作用

如果启用了此侦听器,则调用通知侦听器DECISION

全部决定

返回用户的所有活动(未存档)标帜的决策。

有关详细信息,请参阅云眼决策

变体

SDK v3.7 及更高版本

描述

使用“全部决定”方法返回用户的标帜决策映射。

参数

下表描述了“全部决定”方法的参数:

参数

类型

描述

选项(可选)

数组

Array of EyeofcloudDecideOption enums.请参见确定参数

返回

方法返回云眼决策的映射。有关更多信息,请参阅云眼决策

如果该方法对所有标帜都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标帜的错误,它将在该标帜的决策的“原因”字段中返回错误消息。

例子

下面是使用“全部决定”调用获取用户的标帜的示例:

科特林Java

// make decisions for all active (unarchived) flags in the project for a user val options = Arrays.asList(EyeofcloudDecideOption.ENABLED_FLAGS_ONLY) val decisions = user!!.decideAll(options) val allKeys: Set<String> = decisions.keys val decisionForFlag1 = decisions["flag_1"]

// make decisions for all active (unarchived) flags in the project for a user List<EyeofcloudDecideOption> options = Arrays.asList(EyeofcloudDecideOption.ENABLED_FLAGS_ONLY); Map<String, EyeofcloudDecision> decisions = user.decideAll(options); Set<String> allKeys = decisions.keySet(); EyeofcloudDecision decisionForFlag1 = decisions.get("flag_1");

副作用

为每个决策调用 [通知侦听器]doc:set-up-notification-listener-android)(如果启用了此侦听器)。DECISION

决定键

方法返回指定标帜键的标帜决策映射。

变体

SDK v3.7 及更高版本

描述

获取特定标帜键的标帜决策图。

参数

下表描述了“决定键”方法的参数:

参数

类型

描述

钥匙

数组

字符串标帜键数组。

选项(可选)

数组

Array of EyeofcloudDecideOption enums.请参阅云眼决策选项

返回

返回云眼决策的映射。有关更多信息,请参阅云眼决策

如果该方法对所有标帜都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标帜的错误,它将在该标帜的决策的“原因”字段中返回错误消息。

以下是获取用户指定标帜的示例:

科特林Java

// make decisions for specific flags val keys = Arrays.asList("flag-1", "flag-2") val decisions = user!!.decideForKeys(keys) val decision1 = decisions["flag-1"] val decision2 = decisions["flag-2"]

// make decisions for specific flags List<String> keys = Arrays.asList("flag-1", "flag-2"); Map<String, EyeofcloudDecision> decisions = user.decideForKeys(keys); EyeofcloudDecision decision1 = decisions.get("flag-1"); EyeofcloudDecision decision2 = decisions.get("flag-2");

副作用

为每个决策调用通知侦听器(如果启用了此侦听器)。DECISION

源文件

包含Android实现的语言/平台源文件位于Eyeofcloud.javaopen in new window

Last update:
Contributors: “zhangweixue”