功能实验的实时区段C# SDK 的区段限定方法
功能实验的实时区段C# SDK 的区段限定方法
使用FetchQualifiedSegments方法从 Eyeofcloud Data Platform (ODP) 服务器检索用户的外部受众映射。使用IsQualifiedFor方法检查用户是否符合指定区段的条件。
先决条件
您必须启用用于功能实验集成的实时区段在获取合格的区段并检查用户是否符合给定受众区段的条件之前。
FetchQualifiedSegments
最低 SDK 版本
4.0.0
描述
您可以使用FetchQualifiedSegments方法从 Eyeofcloud Data Platform (ODP) 服务器检索特定用户的外部受众映射。Eyeofcloud 功能试验 C# SDK 提供FetchQualifiedSegments方法的同步和异步版本。
- SDK 会阻止调用方,直到完成同步获取。
 - SDK 不会阻止异步 API 的调用方。
 
FetchQualfiedSegments是UserContext对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
fetchQualifiedSegments方法的参数说明如下表所示:
| 参数 | 类型 | 描述 | 
|---|---|---|
| callback (用于异步调用) | 回调函数 | 要使用 fetch 结果调用的完成处理程序。 | 
| segmentOptions(可选) | 列表 | 用于从 ODP 获取合格区段的一组选项。 | 
返回 – 同步调用
如果限定的 segments 数组位于 EyeofcloudUserContext 中,则FetchQualifiedSegmentssynchronous 方法返回true。
Returns (返回) – 异步调用
- 如果提取成功完成,C# SDK 会更新EyeofcloudUserContext然后调用状态为 Success 的回调处理程序。
 - 如果提取失败,SDK 将调用状态为 failure 的处理程序。
 
asynchronous FetchQualifiedSegments返回一个Task对象,该对象可用于.Wait()完成任务。
如果 C# SDK 在数据文件中找不到 ODP 受众,它将返回一个空的合格区段数组,而不向 ODP 服务器发送请求。
📘
注意
您可以直接读取和写入限定的区段列表,而不是使用
GetQualifiedSegments()和SetQualifiedSegments()调用FetchQualifiedSegments()。这样,您就可以绕过 ODP 的远程提取过程或使用您自己的提取服务。这在测试或调试时可能很有帮助。
示例 调用FetchQualifiedSegments 
该代码通过实例化用户 ID 为“user123”的EyeofcloudUserContext对象和一组属性(其中包括值为“1.3.2”的“app_version”属性)来创建用户上下文。
代码的下一部分显示了如何使用FetchQualifiedSegments方法获取所有带和不带 segment 选项的合格区段。
之后,代码使用该方法Decide决定是否向用户显示带有键“flag1”的功能标志。最后,代码调用该trackEvent方法以跟踪名为 “myevent” 的自定义事件。
var eyeofcloud = EyeofcloudFactory.NewDefaultInstance();
var attributes = new UserAttributes
{
    { "app_version", "1.3.2" },
};
var userContext = eyeofcloud.CreateUserContext("user123", attributes);
var success = false;
var task = userContext.FetchQualifiedSegments(result => success = result);
// Do other work here
task.Wait();
// Do more work that depends on `success`
if (success)
{
    userContext.Decide("flag1");
    userContext.TrackEvent("myevent");
}var eyeofcloud = EyeofcloudFactory.NewDefaultInstance();
var userContext = eyeofcloud.CreateUserContext("user123", new UserAttributes
{
    { "app_version", "1.3.2" },
});
var success = userContext.FetchQualifiedSegments();
if (success)
{
    userContext.Decide("flag1");
    userContext.TrackEvent("myevent");
}下图显示了在调用FetchQualifiedSegments时应用程序、C# SDK 和 ODP 服务器之间的网络调用:

- 调用
FetchQualifiedSegments方法。 - C# SDK 对 ODP 进行 GraphQL 调用以获取区段。
 - ODP 使用合格的区段进行响应。
 - 将缓存将用户 ID 映射到区段的已获取区段,请参阅下面的详细信息。
 - 为用户返回适当的变体。
 
然后,SDK 会缓存获取的区段。这意味着,如果同一用户再次请求区段(创建新的用户上下文时),您可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器获取该信息。
缓存用于调用FetchQualifiedSegments。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用FetchQualifiedSegments时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
您可以通过向OdpSegmentOptions数组添加以下选项来绕过缓存:
- IGNORE_CACHE – 绕过分段缓存以进行查找和保存。
 - RESET_CACHE – 重置所有分段缓存。
 
IsQualifiedFor
最低 SDK 版本
4.0.0 版
描述
检查用户是否符合给定受众细分的条件。
参数
IsQualifiedFor方法的参数说明如下表所示:
| 参数 | 类型 | 描述 | 
|---|---|---|
| 段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合条件。 | 
返回
true如果用户是合格的。
例子
以下是用户是否符合 ODP 分段条件的示例:
C#
var projectConfigurationManager = new HttpProjectConfigManager.Builder()
    .WithSdkKey("YOUR_SDK_KEY")
    .WithPollingInterval(TimeSpan.FromSeconds(5))
    .WithBlockingTimeoutPeriod(TimeSpan.FromMilliseconds(500))
    .Build(defer: true);
var eyeofcloud = new Eyeofcloud(projectConfigurationManager);
var attributes = new UserAttributes
{
    { "laptop_os", "mac" },
};
var userContext = eyeofcloud.CreateUserContext("user123", attributes);
userContext.FetchQualifiedSegments();
userContext.IsQualifiedFor("segment1");