⚫️ ⚪️
Reversi
Reversi
关于其动机在我博客上了解更多 阅读更多。
内容
为什么选择 Reversi?
- 功能标志和 A/B 测试工具是为产品营销人员和经理设计的,却忘记了它们应该是 开发者友好 的。添加 A/B 测试或功能标志应该像设置任何属性一样简单。
- 选择你的服务,保留你的数据。Reversi 不处理数据,它应该被设计得既能与捆绑文件一起工作,也能与远程服务一起工作。您只需在启动时注入配置,Reversi 将在何时运行 UI 变体时进行处理。
Reversi
关于其动机在我博客上了解更多 阅读更多。
使用 Reversi 的 Apptimize
myObject.defaultVariant()
myObject.addFeatureFlag("new_feature_flag_variable") { object in
object.customVariant()
}
有关如何实现 Reversi for Apptimze 的更多介绍
Reversi之前的Firebase
var welcomeMessage = remoteConfig[welcomeMessageConfigKey].stringValue
Reversi之后的Firebase
var welcomeMessage = "Welcome"
welcomeMessage.addVariation(welcomeMessageConfigKey, for: String.self) { welcomeMessage, newText in
welcomeMessage = newText
}
了解如何在Firebase上实施Reversi的更多信息,请参阅Reversi for Firebase
Reversi之前的Optimizely
// Activate an A/B test
let variation = client?.activate("app_redesign", userId:"12122")
if (variation?.variationKey == "control") {
// Execute code for "control" variation
myObject.variantControl()
} else if (variation?.variationKey == "treatment") {
// Execute code for "treatment" variation
myObject.variantTreatment()
} else {
// Execute code for users who don't qualify for the experiment
myObject.defaultVariant()
}
Reversi之后的Optimizely
// Activate an A/B test
myObject.defaultVariant()
myObject
.addVariation("app_redesign", for: Void.self, options: ["variable_key": "control"]) { myObject, _ in
myObject.variantControl()
}
.addVariation("app_redesign", for: Void.self, options: ["variable_key": "treatment"]) { myObject, _ in
myObject.variantControl()
}
了解如何在Firebase上实施Reversi的更多信息,请参阅Reversi for Firebase
Reversi包括多种变体,仅执行正在运行的实验中包含的变体。它设计了一个唯一的标识符来标识该实验。
// feed your configuration to the service from local json or remote service
ReversiService.shared.configure(with: configuration)
label.text = "Hello World"
label.font = UIFont.boldSystemFont(ofSize: 15)
label.textColor = .darkGray
// block will be executed only if "text_variation" experiment is up and running
label.addVariation("text_variation", for: String.self) { label, value in
label.text = value // "Hello Variation World"
}
变体的数量和访问没有限制
label
label.addVariation("text_variation", for: String.self) { label, value in
label.text = variationText
}
.addFeatureFlag("font_variation") { label in
label.font = UIFont.boldSystemFont(ofSize: 14)
}
// button color
button.addFeatureFlag("button_variation") { button in
button.backgroundColor = .orange
}
// combined elements
self.addFeatureFlag("combined_variation") { viewController in
viewController.label.textColor = .lightGray
viewController.button.setTitleColor(.lightGray, for: .normal)
}
由于每个实验直接影响到UI元素,变体仅在主线程上执行。
Reversi可以通过CocoaPods获取。要安装它,请将以下行添加到您的Podfile中
pod 'Reversi'
Reversi 也可以通过 Carthage 获得。
github 'popei69/Reversi' ~> 1.0
要运行示例项目,请先克隆仓储,并从 Example 目录运行 pod install
。
Benoit Pasquier,[email protected]
该项目仍在探索中。我很乐意接受任何建议和改进的工单。
Reversi 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。