强制决策方法

云眼About 5 min

强制决策方法

本主题介绍强制决策方法,这些方法可用于强制用户进入云眼灰度实验中的特定变体。

这些方法将通过强制用户进入特定变体来帮助测试和调试客户端应用程序的各种流。

Android SDK 会在做出任何决策之前检查是否已实施任何强制决策方法。如果找到请求标帜的匹配项,SDK 会在做出正常决策之前立即返回强制决策(忽略受众条件流量分配)。

下面介绍了安卓 SDK 将遵循的具体场景:

标记到决策

  • Android SDK 将在任何给定标帜的决定调用开始时查找。如果为该标帜找到匹配的标帜到决策强制决策,它将返回该决定。

从实验规则到决策

  • Android SDK 将在决策开始时查找给定实验规则(标帜键)。如果为标帜找到匹配的实验规则到决策强制决策,它将返回决策。

从交付规则到决策

  • Android SDK 将在决策开始时查找给定的投放规则(标帜键)。如果找到匹配的传递规则到决策强制决策,它将返回该决策。

❗️

警告

在调用任何强制决策方法之前,必须将变体关联到标帜规则

对于强制决策,Android SDK 会像其他正常决策一样触发展示事件和通知(除非被 disableDecisionEvent 禁用。

📘 注意

这些强制决策不是永久性的,将在重新初始化 EyeofcloudUserContext 时清除。

有关每种强制决策方法的更多信息,请单击下面的方法名称:

云眼分桶结果 EyeofcloudDecision上下文

KotlinJava

data class EyeofcloudDecisionContext(val flagKey: String, val ruleKey: String?)

public class EyeofcloudDecisionContext { public EyeofcloudDecisionContext(@Nonnull String flagKey, @Nullable String ruleKey); public String getFlagKey(); public String getRuleKey(); }

云眼强制决策

KotlinJava

data class EyeofcloudForcedDecision(val variationKey: String)

public class EyeofcloudForcedDecision { public EyeofcloudForcedDecision(@Nonnull String variationKey); public String getVariationKey(); }

Set Forced Decision Method - setForcedDecision()

版本

3.9.1

描述

为给定的 设置强制决策 ()。variationKey``EyeofcloudDecisionContext

参数

下表列出了 Android SDK 的必需参数和可选参数。

Parameter

Type

Description

context
required

Struct

An instance of with the required and optional for the forced decision you want to set. EyeofcloudDecisionContext``flagKey``ruleKey

(必选)决定

结构

的实例,其中包含要设置的强制决策所需的实例。EyeofcloudForcedDecision``variationKey

返回

一个布尔值,指示是否成功完成了强制决策 () 的设置。 variationKey

在此处查看完整的 Android SDK 示例。

获取强制决策方法 - getForcedDecision()

变体重新运行

3.9.1

描述

返回给定 的强制决策 ()。返回实例,如果没有匹配项,则返回 null。variationKey``EyeofcloudDecisionContext``EyeofcloudForcedDecision

参数

下表列出了 Android SDK 的必需参数和可选参数。

参数

类型

描述

所需的上下文

结构

的实例,其中包含要获取的强制决策的必需和可选。EyeofcloudDecisionContext``flagKey``ruleKey

返回

上下文的强制决策实例,如果没有匹配项,则为 null。 EyeofcloudForcedDecision

在此处查看完整的 Android SDK 示例。

删除强制决策方法 - 删除强制决策()

变体

3.9.1

描述

删除给定 的强制决策 ()。variationKey``EyeofcloudDecisionContext

参数

下表列出了 Android SDK 的必需参数和可选参数。

参数

类型

描述

所需的上下文

.class

的实例,具有要删除的强制决策的必需和可选。EyeofcloudDecisionContext``flagKey``ruleKey

返回

删除强制决策 () 时的成功/失败布尔状态。 variationKey

在此处查看完整的 Android SDK 示例。

删除所有强制决策方法 - 删除所有强制决策()

变体

3.9.1

描述

删除用户上下文的所有强制决策 ()。variationKey

参数

下表列出了 Android SDK 的必需参数和可选参数。

参数

类型

描述

没有

不适用

不适用

Returns

A success/failure boolean status.

Example

See the full Android SDK example here.

Full Code Example

KotlinJava

// Create the EyeofcloudUserContext, passing in the UserId and Attributes val user = eyeofcloudClient.createUserContext("user-id") val flagContext = EyeofcloudDecisionContext("flag-1", null) val flagAndABTestContext = EyeofcloudDecisionContext("flag-1", "exp-1") val flagAndDeliveryRuleContext = EyeofcloudDecisionContext("flag-1", "delivery-1") val variationAForcedDecision = EyeofcloudForcedDecision("variation-a") val variationBForcedDecision = EyeofcloudForcedDecision("variation-b") val variationOnForcedDecision = EyeofcloudForcedDecision("on") // set a forced decision for a flag var success = user!!.setForcedDecision(flagContext, variationAForcedDecision) var decision = user.decide("flag-1") // set a forced decision for an ab-test rule success = user.setForcedDecision(flagAndABTestContext, variationBForcedDecision) decision = user.decide("flag-1") // set a forced variation for a delivery rule success = user.setForcedDecision(flagAndDeliveryRuleContext, variationOnForcedDecision) decision = user.decide("flag-1") // get forced variations val forcedDecision = user.getForcedDecision(flagContext) println("[ForcedDecision] variationKey = " + forcedDecision!!.variationKey) // remove forced variations success = user.removeForcedDecision(flagAndABTestContext) success = user.removeAllForcedDecisions()

/* Create the EyeofcloudUserContext, passing in the UserId and Attributes */ EyeofcloudUserContext user = eyeofcloudClient.createUserContext("user-id"); EyeofcloudDecisionContext flagContext = new EyeofcloudDecisionContext("flag-1", null); EyeofcloudDecisionContext flagAndABTestContext = new EyeofcloudDecisionContext("flag-1", "exp-1"); EyeofcloudDecisionContext flagAndDeliveryRuleContext = new EyeofcloudDecisionContext("flag-1", "delivery-1"); EyeofcloudForcedDecision variationAForcedDecision = new EyeofcloudForcedDecision("variation-a"); EyeofcloudForcedDecision variationBForcedDecision = new EyeofcloudForcedDecision("variation-b"); EyeofcloudForcedDecision variationOnForcedDecision = new EyeofcloudForcedDecision("on"); // set a forced decision for a flag Boolean success = user.setForcedDecision(flagContext, variationAForcedDecision); EyeofcloudDecision decision = user.decide("flag-1"); // set a forced decision for an ab-test rule success = user.setForcedDecision(flagAndABTestContext, variationBForcedDecision); decision = user.decide("flag-1"); // set a forced variation for a delivery rule success = user.setForcedDecision(flagAndDeliveryRuleContext, variationOnForcedDecision); decision = user.decide("flag-1"); // get forced variations EyeofcloudForcedDecision forcedDecision = user.getForcedDecision(flagContext); System.out.println("[ForcedDecision] variationKey = " + forcedDecision.getVariationKey()); // remove forced variations success = user.removeForcedDecision(flagAndABTestContext); success = user.removeAllForcedDecisions();

Last update:
Contributors: zhangweixue,“zhangweixue”