功能实验的实时区段Swift SDK 的区段限定方法
功能实验的实时区段Swift SDK 的区段限定方法
使用 Real-Time Segments for Feature Experimentation 区段方法获取用户的外部受众映射。您可以使用用户上下文的用户标识符来获取用户细分。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
fetchQualifiedSegments - 异步
最低 SDK 版本
4.0.0
描述
获取用户上下文的所有合格区段。
fetchQualfiedSegments
是UserContext
对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
fetchQualifiedSegments
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | [优化分段选项] | 用于从 ODP 获取合格区段的一组选项。 |
完成 | (EyeofcloudError?)-> 虚空 | 要使用 fetch 结果调用的完成处理程序。 |
返回
要在完成时调用的完成处理程序,用于更新合格的 segments 数组。
- 成功后,它会传递 nil 错误。
- 失败时,它会传递以下错误之一:
EyeofcloudError.invalidSegmentidentifier
EyeofcloudError.fetchSegmentsFailed
.
📘
Qualified segments 数组
您可以直接读取和写入合格的 segments 数组,以绕过 Eyeofcloud 数据平台 (ODP) 的远程提取过程或使用您自己的提取服务。这在测试或调试时可能很有帮助。
示例 fetchQualifiedSegments – 异步
以下是调用fetchQualifiedSegments
方法并访问返回的完成对象的示例:
Swift
let attributes: [String: Any] = ["app_version": "1.3.2"]
let user = eyeofcloudClient.createUserContext(userId: "user123", attributes: attributes)
// Without segment option
Task {
let attributes: [String: Any] = ["app_version": "1.3.2"]
let user = eyeofcloud.createUserContext(userId: "user123", attributes: attributes)
try? user.fetchQualifiedSegments()
}
// With segment options
Task {
var odpSegmentOptions: [EyeofcloudSegmentOption] = [.ignoreCache, .resetCache]
let attributes: [String: Any] = ["app_version": "1.3.2"]
let user = eyeofcloud.createUserContext(userId: "user123", attributes: attributes)
try? user.fetchQualifiedSegments(options: odpSegmentOptions)
}
fetchQualifiedSegments – 同步
最低 SDK 版本
4.0.0
描述
这是上述fetchQualifiedSegments
异步版本的同步版本。
📘
注意
此调用会阻止调用线程,直到提取完成。
参数
fetchQualifiedSegments
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | [优化分段选项] | 用于从 ODP 获取合格区段的一组选项。 |
返回
此方法不提供返回值。如果失败,则会引发以下错误之一:
EyeofcloudError.invalidSegmentIdentifier
EyeofcloudError-fetchSegmentsFailed(String)
示例 fetchQualifiedSegments - 同步
以下是调用fetchQualifiedSegments
方法并访问返回的完成对象的示例:
Swift
let eyeofcloud = EyeofcloudClient(sdkKey: <Your_SDK_Key>)
eyeofcloud.start { result in
let attributes: [String: Any] = ("app version": "1.3.2")
let user = eyeofcloudClient.createUserContext(userld: "user123", attributes: attributes)
do {
// this will block the calling thread until fetch is completed.
try user.fetchQualifiedSegments()
let decision = user. decide(key: "flag1")
} catch EyeofcloudError.invalidSeqmentIdentifier {
print("[AudienceSegments] audience segments fetch failed (user id is not registered yet or invalid)")
} catch {
print("[AudienceSegments] \(error)")
}
}
下图显示了在调用fetchQualifiedSegments
时应用程序、Swift SDK 和 ODP 服务器之间的网络调用:
- 调用
fetchQualifiedSegments
方法。 - Swift SDK 对 ODP 进行 GraphQL 调用以获取区段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。
- 为用户返回适当的变体。
SDK 获取区段,然后缓存它们。这意味着,如果同一用户再次请求区段(创建新用户上下文时),您可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器中检索。
缓存用于调用fetchQualifiedSegments
。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用fetchQualifiedSegments
时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
您可以向odpSegmentOptions
数组添加以下选项以绕过缓存:
- ignoreCache – 绕过分段缓存以进行查找和保存。
- resetCache – 重置所有分段缓存。
isQualifiedFor
最低 SDK 版本
4.0.0
描述
检查用户是否符合给定受众细分的条件。
参数
isQualifiedFor
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
段 | 字符串 | ODP 受众细分名称,用于检查用户是否符合条件 |
返回
如果用户是合格的,true
。
例子
以下是用户是否符合 ODP 分段条件的示例:
Swift
let attributes: [String: Any] = ["laptop_os": "mac"]
let user = eyeofcloudClient.createUserContext(userId: "user123", attributes: attributes)
user.fetchQualifiedSegments { segments, err in
let isQualified = user.isQualifiedFor(segment: "segment1")
}