Shunter
Shunter 是一个小型框架,能够使您在项目中实现 特性开关。
动机
特性开关是一个简单但非常强大的概念。它使开发者能够更早地合并代码、展示“未完成”的功能或提供替代的代码路径。另外,通过配套的远程服务器,它为在产品构建中禁用“问题”的新特性提供了一种方法。
所有这些都帮助提高了开发速度和验证新想法的效率。
这个库的目标是提供一种非常简单的方法,以快速为您的项目添加特性开关。
特性
- 简单小巧
- 定义特性的默认状态(开/关)
- 开发/测试环境中覆盖设置的 UI
要求
- iOS 11.0+ / macOS 10.12+
- Xcode 10.2+
- Swift 5+
安装
CocoaPods
将pods添加到您的Podfile
pod 'Shunter'
然后运行
pod install
将cocoapod安装到项目中后,使用以下方式导入库
import Shuter
使用
特性是一个包含标识符和注释的类型。
将所有特性分组在同一个位置的最佳方式是在Feature
类型上创建一个扩展中的静态属性。例如
import Shunter
extension Feature {
public static let feature01Feature = Feature("ios_feature01", comment: "Example feature #01")
public static let feature02Feature = Feature("ios_feature02", comment: "Example feature #02")
}
初始化iOS应用程序中的FeatureManager
的最佳位置是AppDelegate
。下面的示例显示了manager以禁用Release
构建中的shake
动作进行设置。
#if DEBUG
let showOverrideScreenOnShake = true
#else
let showOverrideScreenOnShake = false
#endif
FeatureManager.setup(
configuration: .defaultConfiguration(showOverrideScreenOnShake: showOverrideScreenOnShake),
features: [
.feature01Feature: false,
.feature02Feature: true
])
在您的代码中检查特性状态的示例
if FeatureManager.shared.isEnabled(.feature02Feature) {
// enable your feature
} else {
// the feature is disabled
}
或更简短版本
if FeatureManager.shared[.feature02Feature] {
// enable your feature
} else {
// the feature is disabled
}
您将在Demo应用程序中找到更多代码示例。
作者
许可
本项目受MIT许可证许可 - 有关详细信息,请参阅LICENSE.md文件