RealFlags 使 配置代码中的功能标志 变得容易。 它专为 Swift 设计,并提供了一个简单而优雅的抽象层,通过它可以根据您的优先级查询多个提供者。 它还具有一个 方便的 UI 工具,可以直接在运行时浏览和更改值!
特性 | 您能得到什么 | 标志浏览器 & 编辑器 | 测试 | 文档 | 要求 | 安装 | 支持的应用 | 支持 & 贡献 | 许可证
Int
(以及任何数值变体), String
, Bool
, Data
, Date
, URL
, Dictionary
, Array
(值必须符合 FlagProtocol
), 可选值以及几乎任何符合 Codable
协议的对象!您会在您的产品中使用 RealFlags 吗? 我们写了一篇关于它的文章。 点击这里查看
我们制作 RealFlags 的目标是提供一种类型安全的抽象方法来描述和查询功能标志。
第一步是描述您的标志集合。
// Define the structure of your feature flags with type-safe properties!
struct UserFlags: FlagCollectionProtocol {
@Flag(default: true, description: "Show social login options along native login form")
var showSocialLogin: Bool
@Flag(default: 0, description: "Maximum login attempts before blocking account")
var maxLoginAttempts: Int
@Flag(key: "rating_mode", default: "at_launch", description: "The behaviour to show the rating popup")
var appReviewRating: String
public init() {}
}
这表示对分组在一个集合中的某些标志的类型安全描述。每个功能标志属性都由 @Flag
注释标识。现在是加载此集合的值的时候了;使用新的 FlagsLoader
,您将能够从一个或多个数据提供者加载和查询集合的值。
// Allocate your own data providers
let localProvider = LocalProvider(localURL: fileURL)
let fbProvider = FirebaseRemoteProvider()
// Loader is the point for query values
let userFlagsLoader = FlagsLoader(UserFlags.self, // load flags definition
description: .init(name: "User Features", description: "Cool experimental features for user account"),
providers: [fbProvider, localProvider]) // set providers
现在,您可以使用 UserFlags
结构从 userFlagsLoader
查询值(由于 @dynamicMemberLookup
,它支持自动完成和类型安全值!)。让我来展示一下
if userFlagsLoader.showSocialLogin { // query properties as type-safe with autocomplete!
// do some stuff
}
获得的值遵循您指定的顺序,在本例中,首先来自 Firebase Remote Config 服务,然后,当未找到值时,进入本地存储库。 如果没有可用的值,则返回在 @Flags
注释中指定的默认值。
这只是该库的一个概述;如果您想了解更多信息,请遵循下面的文档。
RealFlags 还带有一个方便的工具,您可以使用它直接在客户端浏览和编辑功能标志值! 它对于测试目的很有用,或者允许产品所有者启用/禁用和验证应用程序的功能。
RealFlags 在源代码级别进行了完整记录。 您将在 XCode 中免费获得带有文档的自动完成功能;此外,您可以从这里阅读由 Swift Package Index 项目自动生成的完整 Apple 的 DoCC 文档。
👉 API 参考
以下文档描述了该库的详细用法。
Codable
类型和 @Flag
FlagLoader
中加载功能标志集合FlagsLoader
的 @Flag
配置键评估@FlagCollection
注解FlagCollection
对属性键路径生成的贡献RealFlags 包含大量的单元测试:您可以在 Tests
目录中找到它。
RealFlags 可以安装在任何支持 Swift 5.4+ 的平台上,包括 Windows 和 Linux。 在 Apple 平台上,需要以下配置
要在您的项目中使用 RealFlags,您可以使用 Swift Package Manager(我们的首选)或 CocoaPods。
将其作为依赖项添加到 Swift Package 中,并将其添加到您的 Package.swift
。
dependencies: [
.package(url: "https://github.com/immobiliare/RealFlags.git", from: "1.0.0")
]
并将其作为目标的依赖项添加
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "https://github.com/immobiliare/RealFlags.git", package: "RealFlags")
])
]
在 Xcode 11+ 中,您还可以导航到“File”菜单并选择“Swift Packages”->“Add Package Dependency...”,然后输入存储库 URL 和版本详细信息。
可以通过将 pod 'RealFlags' 添加到您的 Podfile 中,使用 CocoaPods 安装 RealFlags。
pod 'RealFlags' // to import the core framework
pod 'RealFlagsFirebase' // to also import Firebase Data Provider
ImmobiliareLabs 的出色移动团队创建了 RealFlags,Immobiliare.it 的技术部门,意大利第一个房地产网站。 我们目前在所有产品中使用 RealFlags。
如果您在您的应用程序中使用 RealFlags,请 给我们发送消息.
我们希望您为 RealFlags 做出贡献!如果您对使用 RealFlags、错误和增强功能有疑问,请随时通过打开 GitHub Issue 与我们联系。
RealFlags 在 MIT 许可证下获得许可。 有关更多信息,请参见 LICENSE 文件。