针对 iOS 和 Mac 的多变量测试与 A/B 测试
SkyLab 是一个后端无关的多变量测试和 A/B 测试框架。
使用 NSUserDefaults
持久化测试条件,确保每个用户都会有一个一致的经验,无论他们最终落在哪个测试桶中。
SkyLab 容易集成到任何现有的统计网页服务。根据您特定的需求,这可能包括在测试块中发布到端点或为共享 API 客户端设置 HTTP 标头。
鼓励请求与任何特定后端的集成。
该项目是开源库系列的一部分,涵盖 iOS 应用基础设施的关键方面。请务必查看其姐妹项目:GroundControl、CargoBay、houston 和 Orbiter。
查看包含的示例项目以查看所有功能。
[SkyLab abTestWithName:@"Title" A:^{
self.titleLabel.text = NSLocalizedString(@"Hello, World!", nil);
} B:^{
self.titleLabel.text = NSLocalizedString(@"Greetings, Planet!", nil);
}];
您可以将一个 NSDictionary
(其中值代表其相应键的加权概率)或一个 NSArray
(其中每个值都有相等的机会被选中)传递到 choices
参数中。
[SkyLab splitTestWithName:@"Subtitle" conditions:@{
@"Red" : @(0.15),
@"Green" : @(0.10),
@"Blue" : @(0.50),
@"Purple" : @(0.25)
} block:^(id choice) {
self.subtitleLabel.text = NSLocalizedString(@"Please Enjoy This Colorful Message", nil);
if ([choice isEqualToString:@"Red"]) {
self.subtitleLabel.textColor = [UIColor redColor];
} else if ([choice isEqualToString:@"Green"]) {
self.subtitleLabel.textColor = [UIColor greenColor];
} else if ([choice isEqualToString:@"Blue"]) {
self.subtitleLabel.textColor = [UIColor blueColor];
} else if ([choice isEqualToString:@"Purple"]) {
self.subtitleLabel.textColor = [UIColor purpleColor];
}
}];
[SkyLab multivariateTestWithName:@"Switches" variables:@{
@"Left" : @(0.5),
@"Center" : @(0.5),
@"Right" : @(0.5)
} block:^(NSSet *activeVariables) {
self.leftSwitch.on = [activeVariables containsObject:@"Left"];
self.centerSwitch.on = [activeVariables containsObject:@"Center"];
self.rightSwitch.on = [activeVariables containsObject:@"Right"];
}];
SkyLab 可在 MIT 许可证下获得。有关更多信息,请参阅 LICENSE 文件。