云眼配置

云眼About 6 min

云眼配置

本主题介绍如何使用 PHP SDK 的云眼配置访问数据文件中的项目配置数据。

概述

全栈 SDK 打开一组定义明确的公共 API,隐藏所有实现详细信息。但是,某些客户端可能需要访问数据文件中的项目配置数据

在本文档中,我们扩展了公共 API 以定义数据模型和访问方法,客户端可以使用这些模型和方法访问项目配置数据。

EyeofcloudConfig API

公共配置数据模型(EyeofcloudConfig)在下面定义为静态Eyeofcloud项目数据的结构化格式。

获取云眼配置

EyeofcloudConfig可以通过以下公共API调用从EyeofcloudClient(顶级)访问:

.PHP

$config = $eyeofcloudClient->getEyeofcloudConfig();

getEyeofcloudConfig 返回一个实例,其中包括EyeofcloudConfig

  • 环境键
  • 开发工具包密钥
  • 数据文件修订号
  • 按其键值映射的所有实验
  • 所有属性
  • 所有受众
  • 所有活动
  • 按其键值映射的灰度标帜
  • 检索项目配置(数据文件)的函数

📘 注意

当 SDK 数据文件更新时(客户端可以添加通知侦听器以获取通知),客户端应调用该方法以获取更新的 EyeofcloudConfig 数据。请参阅以下示例。EYEOFCLOUD_CONFIG_UPDATE

获取数据文件

若要确保多个 SDK 实例都从同一配置实例化(例如,在客户端/服务器方案中),可以在实例之间传递配置(数据文件)的 JSON 字符串表示形式。若要获取数据文件,请使用对象的方法。有关更多信息,请参阅与多个 SDK 实现共享数据文件EyeofcloudConfig``getDatafile

对象模型

下面显示了 EyeofcloudConfig 的对象模型。

PHP - 对象模型

/** * EyeofcloudConfig is an object describing the current project configuration data being used by this SDK instance. * @typedef {string} environmentKey * @typedef {string} sdkKey * @typedef {string} revision * This experimentsMap is for experiments of legacy projects only. * For flag projects, experiment keys are not guaranteed to be unique * across multiple flags, so this map may not include all experiments * when keys conflict. * @property {Object.<string, EyeofcloudExperiment>}} experimentsMap * @property {Object.<string, EyeofcloudFeature>}} featuresMap * @property [Object.<string, EyeofcloudAttribute>}] attributes * @property [Object.<string, EyeofcloudAudience>}] audiences * @property [Object.<string, EyeofcloudEvent>}] events */ /** * EyeofcloudFeature is an object describing a feature flag * @typedef {Object} EyeofcloudFeature * @property {string} id * @property {string} key * @property [Object.<string, EyeofcloudExperiment>}] experimentRules * @property [Object.<string, EyeofcloudExperiment>}] deliveryRules * Use experimentRules and deliverRules * @property {Object.<string, EyeofcloudExperiment>}} experimentsMap * @property {Object.<string, EyeofcloudVariable>}} variablesMap */ /** * EyeofcloudExperiment is an object describing an experiment * @typedef {Object} EyeofcloudExperiment * @property {string} id * @property {string} key * @property {string} audiences * @property {Object.<string, EyeofcloudVariation>}} variationMap */ /** * EyeofcloudVariation is an object describing a variation in an experiment * @typedef {Object} EyeofcloudVariation * @property {string} id * @property {string} key * @property {boolean=} featureEnabled * @property {Object.<string, EyeofcloudVariable>}} variablesMap */ /** * EyeofcloudVariable is an object describing a feature flag variable * @typedef {Object} EyeofcloudVariable * @property {string} id * @property {string} key * @property {string} type * @property {string} value */ /** * EyeofcloudAttribute is an object describing an attribute * @typedef {Object} EyeofcloudAttribute * @property {string} id * @property {string} key */ /** * EyeofcloudAudience is an object describing an audience * @typedef {Object} EyeofcloudAudience * @property {string} id * @property {string} name * @property {string} conditions */ /** * EyeofcloudEvent is an object describing an event * @typedef {Object} EyeofcloudEvent * @property {string} id * @property {string} key * @property {array} experimentIds */

Examples

EyeofcloudConfig can be accessed from EyeofcloudClient (top-level) like this:

PHP

$config = $eyeofcloudClient->getEyeofcloudConfig(); // get the revision echo "[EyeofcloudConfig] revision:" . $config->getRevision(); // get the SDK key echo "[EyeofcloudConfig] SDKKey:" . $config->getSdkKey(); // get the environment key echo "[EyeofcloudConfig] environmentKey:" . $config->getEnvironmentKey(); // all attributes echo "[EyeofcloudConfig] attributes:"; $attributes = $config->getAttributes(); foreach($attributes as $attribute) { echo "[EyeofcloudAttribute] -- (id, key) = ((" . $attribute->getId(). "), (". $attribute->getKey() . "))"; } // all audiences echo "[EyeofcloudConfig] audiences:"; $audiences = $config->getAudiences(); foreach($audiences as $audience) { echo "[EyeofcloudAudience] -- (id, key, conditions) = ((" . $audience->getId(). "), (". $audience->getName() . "), (". $audience->getConditions() . "))"; } // all events echo "[EyeofcloudConfig] events:"; $events = $config->getEvents(); foreach($events as $event) { echo "[EyeofcloudEvent] -- (id, key, experimentIds) = ((" . $event->getId(). "), (". $event->getKey() . "), (". $event->getExperimentIds() . "))"; } // all flags $flags = array_values((array)$config->getFeaturesMap()); foreach ($flags as $flag) { // Use experimentRules and deliverRules $experimentRules = $flag->getExperimentRules(); foreach ($experimentRules as $experimentRule) { echo "[EyeofcloudExperiment] - experiment rule-key = " . $experimentRule->getKey(); echo "[EyeofcloudExperiment] - experiment audiences = " . $experimentRule->getExperimentAudiences(); // all variations $variations = array_values((array)$experimentRule->getVariationsMap()); foreach ($variations as $variation) { echo "[EyeofcloudVariation] -- variation = { key: " . $variation->getKey() . ", id: " . $variation->getId() . ", featureEnabled: " . $variation->getFeatureEnabled() . " }"; $variables = $variation->getVariablesMap(); foreach ($variables as $variable) { echo "[EyeofcloudVariable] --- variable: " . $variable->getKey() . ", " . $variable->getId(); // use variable data here. } // use experimentRule data here. } } $deliveryRules = $flag->getDeliveryRules(); foreach ($deliveryRules as $deliveryRule) { echo "[EyeofcloudExperiment] - delivery rule-key = " . $deliveryRule->getKey(); echo "[EyeofcloudExperiment] - delivery audiences = " . $deliveryRule->getExperimentAudiences(); // use delivery rule data here... } } $eyeofcloudClient->notificationCenter->addNotificationListener( NotificationType::EYEOFCLOUD_CONFIG_UPDATE, function () { $newConfig = $eyeofcloudClient->getEyeofcloudConfig(); echo "[EyeofcloudConfig] revision = " . $newConfig ? $newConfig->getRevision() : ""; } );

Updated 2 months ago


[

Track Event

](/experimentation/v4.0.0-full-stack/docs/track-event-php)[

EyeofcloudDecision

](/experimentation/v4.0.0-full-stack/docs/eyeofclouddecision-php)

Did this page help you?

Yes

No

创建用户上下文

介绍创建用户上下文方法,该方法为云眼灰度实验中的标帜决策和事件创建用户上下文。

此方法的目的是创建用户并设置用户上下文一次,因此不必在每次做出标帜决策或跟踪事件时都指定用户。可以定义多个用户上下文。系统将用户上下文作为运行时对象返回,否则不会持久化。

版本

1.0.0-beta 或更高版本

描述

此调用为标帜决策和事件创建用户上下文。可以在 Eyeofcloud 客户端实例上成功调用此方法,甚至在完全配置实例之前也是如此。

参数

下表列出了必需参数和可选参数:

参数

类型

描述

(必选)用户 ID

字符串

用户的 ID。

属性
可选

Map

自定义键值字符串对的映射,指定系统用户用于受众群体定位的用户的属性。有关更多详细信息,请参阅以下部分。

受众群体属性

为用户设置自定义受众群体属性,可以使用这些属性来定位受众群体。可以将字符串、数字、布尔值和 nil 作为自定义用户属性值传递。如果要根据他们使用的应用程序变体定位访问群体,还可以传入格式为语义变体的open in new window字符串,然后在 Eyeofcloud 应用中定义受众条件。version

🚧 重要

在访问群体评估期间,如果没有为给定的访问群体条件传递有效的属性值(例如,如果在受众群体条件需要布尔值时传递字符串,或者忘记传递值),则系统会跳过该条件。发生这种情况时,SDK 日志会包含警告。

返回

返回一个 EyeofcloudUserContext 对象。有关详细信息,请参阅云眼用户上下文

Dart

// option 1: create a user, then set attributes var user = await flutterSDK.createUserContext("user123"); var attributes = <String, dynamic>{}; attributes["is_logged_in"] = false; attributes["app_version"] = "1.3.2"; user!.setAttributes(attributes); // option 2: pass attributes when creating the user var attributes = <String, dynamic>{}; attributes["is_logged_in"] = false; attributes["app_version"] = "1.3.2"; var eyeofcloudUserContext = await eyeofcloudClient.createUserContext("user123", attributes);

参见

云眼用户上下文

源文件

包含 Flutter SDK for Android Eyeofcloudopen in new window 和 Swift 实现的语言/平台源文件.java为 EyeofcloudClient.swiftopen in new window

Last update:
Contributors: “zhangweixue”