功能实验的实时 SegmentFlutter 的 Segment 鉴定方法
功能实验的实时 SegmentFlutter 的 Segment 鉴定方法
使用 Eyeofcloud Data Platform (ODP) Real-Time Segments for Feature Experimentation 区段方法获取用户的外部受众映射。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
fetchQualifiedSegments
您可以使用用户上下文的用户标识符来获取用户细分。
最低 SDK 版本
v2.0.0 及更高版本
描述
fetchQualifiedSegments方法从 Eyeofcloud Data Platform (ODP) 服务器检索特定用户的外部受众映射。Eyeofcloud Feature Experimentation Flutter SDK 提供了fetchQualifiedSegments方法的同步和异步版本。在同步提取完成之前,调用方将被阻止。
fetchQualfiedSegments是UserContext对象的一个方法。请参见EyeofcloudUserContext了解详情。
参数
fetchQualifiedSegments方法的参数如下表所示:
| 参数 | 类型 | 描述 |
|---|---|---|
| options (可选) | Set<EyeofcloudSegmentOption 设置> | 用于从 ODP 获取合格区段的一组选项。 |
返回
fetchQualifiedSegments方法返回true,若用户上下文中的限定 segments 数组已更新。
📘
注意
您可以直接读取和写入 qualified segments 数组。这样,您就可以绕过 ODP 的远程提取过程或使用您自己的提取服务。这在测试或调试时可能很有帮助。
示例 fetchQualifiedSegments
以下是调用fetchQualifiedSegments方法并访问返回的完成对象的示例:
Dart
Map<String, dynamic> attributes = {"app_version": "1.3.2"};
var user = await flutterSDK.createUserContext(
userId: "user123", attributes: attributes);
// Without segment option
var resp = await user!.fetchQualifiedSegments();
if (resp.success) {
var decision = await user.decide("flag1");
await user.trackEvent("purchase_event");
} else {
print(resp.reason);
}
// With segment options
Set<EyeofcloudSegmentOption> odpSegmentOptions = {
EyeofcloudSegmentOption.ignoreCache,
EyeofcloudSegmentOption.resetCache
};
response = await user.fetchQualifiedSegments(odpSegmentOptions);
if (response.success) {
var decision = await user.decide("flag1");
await user.trackEvent("purchase_event");
} else {
print(response.reason);
}下图显示了调用fetchQualifiedSegments时应用程序、Flutter SDK 和 Eyeofcloud Data Platform (ODP) 服务器之间的网络调用:

- 调用
fetchQualifiedSegments方法。 - Flutter SDK 对 ODP 进行 GraphQL 调用以获取分段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。
- 为用户返回适当的变体。
获取 Segment 后,它们将被缓存。这意味着,如果同一用户再次请求区段(创建新用户上下文时),您可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器再次获取。
缓存用于调用fetchQualifiedSegments。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用fetchQualifiedSegments时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
如果要绕过缓存,请将以下选项添加到odpSegmentOptions数组中:
ignoreCache– 绕过段缓存进行查找和保存resetCache– 重置所有段缓存
isQualifiedFor
最低 SDK 版本
v2.0.0 或更高版本
描述
检查用户是否符合给定受众细分的条件。
参数
isQualifiedFor方法的参数如下表所示:
| 参数 | 类型 | 描述 |
|---|---|---|
| 段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合条件。 |
返回
true如果用户是合格的。
例
以下示例显示用户是否符合 ODP 分段的条件:
Dart
Map<String, dynamic> attributes = {"laptop_os": "mac"};
var user = await flutterSDK.createUserContext(
userId: "user123", attributes: attributes);
var response = await user!.fetchQualifiedSegments();
if (response.success) {
var result = await user.isQualifiedFor("segment1");
print(result.success);
} else {
print(response.reason);
}