强制决策方法
强制决策方法
本主题介绍强制决策方法,这些方法可用于强制用户进入云眼特性标帜(Feature Flag)AB实验中的特定变体。
这些方法将通过强制用户进入特定变体来帮助测试和调试客户端应用程序的各种流。
Android SDK 会在做出任何决策之前检查是否已实施任何强制决策方法。如果找到请求标帜的匹配项,SDK 会在做出正常决策之前立即返回强制决策(忽略受众条件和流量分配)。
下面介绍了安卓 SDK 将遵循的具体场景:
标记到决策
- Android SDK 将在任何对给定标帜的决定调用开始时查找。如果为该标帜找到匹配的标帜到决策强制决策,它将返回该决定。
从实验规则到决策
- Android SDK 将在决策开始时查找给定实验规则(标帜键)。如果为标帜找到匹配的实验规则到决策强制决策,它将返回决策。
从交付规则到决策
- Android SDK 将在决策开始时查找给定的投放规则(标帜键)。如果找到匹配的传递规则到决策强制决策,它将返回该决策。
❗️
警告
在调用任何强制决策方法之前,必须将变体关联到标帜规则。
对于强制决策,Android SDK 会像其他正常决策一样触发展示事件和通知(除非被 disableDecisionEvent 禁用。
📘 注意
这些强制决策不是永久性的,将在重新初始化 EyeofcloudUserContext 时清除。
有关每种强制决策方法的更多信息,请单击下面的方法名称:
云眼分桶结果 EyeofcloudDecision上下文
Kotlin
data class EyeofcloudDecisionContext(val flagKey: String, val ruleKey: String?)
Java
public class EyeofcloudDecisionContext {
public EyeofcloudDecisionContext(@Nonnull String flagKey, @Nullable String ruleKey);
public String getFlagKey();
public String getRuleKey();
}
云眼强制决策
Kotlin
data class EyeofcloudForcedDecision(val variationKey: String)
Java
public class EyeofcloudForcedDecision {
public EyeofcloudForcedDecision(@Nonnull String variationKey);
public String getVariationKey();
}
设置强制决策方法- setForcedDecision()
版本
3.9.1
描述
为给定的EyeofcloudDecisionContext
设置强制决策(variationKey
)。
参数
下表列出了 Android SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 结构 | EyeofcloudDecisionContext 的实例,其中包含要获取的强制决策的必需flagKey 和可选ruleKey 。 |
(必选)决定 | 结构 | EyeofcloudForcedDecision 的实例,其中包含要设置的强制variationKey 决策所需的实例。 |
返回
一个布尔值,指示是否成功完成了强制决策(variationKey
)的设置。
例
在此处查看完整的 Android SDK 示例。
获取强制决策方法 - getForcedDecision()
变体重新运行
3.9.1
描述
返回给定EyeofcloudDecisionContext
的强制决策 (variationKey
)。返回EyeofcloudForcedDecision
实例,如果没有匹配项,则返回 null。
参数
下表列出了 Android SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | 结构 | EyeofcloudDecisionContext 的实例,其中包含要获取的强制决策的必需flagKey 和可选ruleKey 。 |
返回
上下文的强制决策EyeofcloudForcedDecision
实例,如果没有匹配项,则为 null。
例
在此处查看完整的 Android SDK 示例。
删除强制决策方法 - 删除强制决策()
变体
3.9.1
描述
删除给定EyeofcloudDecisionContext
的强制决策(variationKey
)。
参数
下表列出了 Android SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
所需的上下文 | .class | EyeofcloudDecisionContext 的实例,其中包含要获取的强制决策的必需flagKey 和可选ruleKey 。 |
返回
删除强制决策(variationKey
)时的成功/失败布尔状态。
例
在此处查看完整的 Android SDK 示例。
删除所有强制决策方法 - 删除所有强制决策()
变体
3.9.1
描述
删除用户上下文的所有强制决策 (variationKey
)。
参数
下表列出了 Android SDK 的必需参数和可选参数。
参数 | 类型 | 描述 |
---|---|---|
没有 | 不适用 | 不适用 |
返回
一个成功/失败布尔状态
例子
查看完整安卓SDK示例 here.
代码示例
Kotlin
// 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()
Java
/* 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();