强制决策方法
强制决策方法
本主题介绍强制决策方法,这些方法可用于强制用户进入云眼灰度发布(特性标帜)AB实验中的特定变体。
这些方法将通过强制用户进入特定变体来帮助测试和调试客户端应用程序的各种流。
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();