功能实验的实时 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 映射到区段的已获取区段。请参阅 OdpSegmentManager。
- 为用户返回适当的变体。
获取 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);
}