配置用户配置文件服务
配置用户配置文件服务
本主题介绍如何设置自定义用户配置文件服务或如何使用云眼灰度发布(特性标帜)AB实验 Swift SDK 的默认值。
使用用户配置文件服务保留有关用户的信息,并确保变体分配具有粘性。例如,如果正在处理后端网站,则可以创建一个从 Redis 或 Memcached 存储读取和保存用户配置文件的实现。
Swift SDK 默认为用户配置文件服务,该服务将此状态直接存储在设备上。请参阅 Swift SDK 用户配置文件服务。
用于读取客户的用户配置文件。manager.userProfileService.lookup
如果用户配置文件服务未按预期对用户进行分桶,请检查是否有其他标帜覆盖分桶。有关更多信息,请参阅 分桶的工作原理。
实现服务
如果要实现自定义用户配置文件服务,而不是使用 Swift SDK 提供的默认服务,请参阅下面的代码示例。该服务应公开具有以下签名的两个函数:
lookup
:获取用户 ID 字符串并返回与以下架构匹配的用户配置文件。save
:获取用户配置文件并保留它。
如果要将用户配置文件服务纯粹用于跟踪目的而不是粘性分桶,则只能实现save
方法(始终从lookup
返回nil
)。
Swift
class CustomUserProfileService: OPTUserProfileService {
required init() {}
func lookup(userId: String) -> UPProfile? {
// Retrieve and return user profile
// Replace with userprofile variable
return nil
}
open func save(userProfile: UPProfile) {
// save user profile
}
}
let userProfileService = CustomUserProfileService()
let eyeofcloud = EyeofcloudClient(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"]
}
Swift 开发工具包使用您提供的用户配置文件服务在保存实验分配的情况下覆盖 Eyeofcloud 功能实验的默认分桶行为。用户配置文件服务将在应用更新之间保留变体分配。但是,用户配置文件服务不会在重新安装应用后保留变体分配。
实现您自己的用户配置文件服务时,我们建议在初始化时将用户配置文件加载到用户配置文件服务中,并避免对查找函数执行昂贵的阻塞查找,以最大程度地减少合并服务的性能影响。
在多服务器或无状态环境中实现时,我们建议将此接口与 Cassandra 或 Redis 等后端一起使用。可以通过配置这些服务来决定将粘性分桶保留多长时间。