实现用户配置文件服务 UserProfileService
October 10, 2024About 2 min
实现用户配置文件服务 UserProfileService
本主题介绍如何设置自定义用户配置文件服务或如何使用云眼特性标帜(Feature Flag)AB实验 Harmony SDK 的默认值。
使用用户配置文件服务保留有关用户的信息,并确保变体分配具有粘性。例如,如果正在处理后端网站,则可以创建一个Memcached 存储读取和保存用户配置文件的实现。
在 Harmony SDK 中,默认为用户配置文件服务,该服务将此状态直接存储在设备上。
用userProfileService.lookup
读取客户的用户配置文件。
<<<<<<< HEAD
如果用户配置文件服务未按预期对用户进行分桶,请检查其他灰度发布/特性标帜(Feature Flag)是否覆盖了分桶。有关更多信息,请参阅 分桶的工作原理。
如果用户配置文件服务未按预期对用户进行分桶,请检查其他特性标帜(Feature Flag)是否覆盖了分桶。有关更多信息,请参阅 分桶的工作原理。
040a31b5b497ceb6d09c6fc421e36c9e01388bb9
实现服务
如果要实现自定义用户配置文件服务,而不是使用 Android SDK 提供的默认服务,请参阅下面的代码示例。您自己的用户配置文件服务应公开两个具有以下签名的函数:
lookup
:获取用户 ID 字符串并返回与以下架构匹配的用户配置文件。save
:获取用户配置文件并保留它。
如果要将用户配置文件服务纯粹用于跟踪目的而不是粘性分桶,则只能实现save
方法(始终从lookup
返回nil
)。
export class customUserProfileService implements UserProfileService {
lookup(userId: string): UserProfile {
return null
}
save(profile: UserProfile): void {
// save user profile
}
}
将此传递给云眼管理器
let eyeofcloudClient = createInstance({sdkKey: sdkKey, userProfileService: userProfileService})
使用此自定义实现,当流量分配更改时,分桶将不再粘滞
下面的代码示例显示了用户配置文件对象的 JSON 架构。
用experiment_bucket_map
覆盖默认分桶行为,并为给定用户定义备用实验变体。对于要覆盖的每个实验,向Map添加一个对象。使用实验 ID 作为键,并包含一个指定所需变体的variation_id
属性。如果没有实验条目,则默认分桶行为仍然存在。
在下面的示例中,^[a-zA-Z0-9]+$
是实验 ID。
JSON
{
"title": "UserProfile",
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"experiment_bucket_map": {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9]+$": {
"type": "object",
"properties": {
"variation_id": {
"type":"string"
}
},
"required": ["variation_id"]
}
}
}
},
"required": ["user_id", "experiment_bucket_map"]
}