ABCenterConfig AB开关配置组件
概述
ABCenterConfig
是基于 Firebase Remote Config 的封装类,提供了远程配置的初始化、拉取激活及多类型读取接口,方便在 iOS 项目中统一管理远程参数。
主要组成
1. 枚举类型 RemoteConfigFetchAndActivateStatus
定义远程配置拉取与激活的状态:
状态 | 说明 |
---|---|
successFetchedFromRemote |
成功从远程获取并激活配置 |
successUsingPreFetchedData |
使用预先拉取的本地缓存配置 |
error |
拉取或激活过程中发生错误 |
2. 类 ABCenterConfig
单例实例
-
shared
:全局单例访问点。
属性
-
remoteConfig
:Firebase Remote Config 实例。
初始化
- 私有构造函数
init()
,调用setUpConfig()
初始化 Remote Config。
公开方法
方法名 | 功能描述 |
---|---|
setup() |
公开初始化接口,预留额外初始化操作 |
fetchAndActivate(completionHandler:) |
异步拉取并激活远程配置,带状态及错误回调 |
string(forKey:) |
获取字符串类型的配置值 |
number(forKey:) |
获取数字类型的配置值 |
data(forKey:) |
获取 Data 类型的配置值 |
bool(forKey:) |
获取布尔类型的配置值 |
jsonValue(forKey:) |
获取 JSON 类型的配置值 |
私有方法
-
setUpConfig()
:配置 Remote Config 实例,设置最小拉取间隔及默认值。
使用示例
1. Pod 导入
pod 'ABCenterConfig'
2. 代码示例
import ABCenterConfig
// 获取单例
let config = ABCenterConfig.shared
// 初始化(可选)
config.setup()
// 拉取并激活远程配置
config.fetchAndActivate { status, error in
switch status {
case .successFetchedFromRemote:
print("配置成功从远程拉取")
case .successUsingPreFetchedData:
print("使用预先拉取的本地配置")
case .error:
print("拉取配置出错:(error?.localizedDescription ?? "未知错误")")
}
}
// 读取配置
let welcomeText = config.string(forKey: "welcome_message") ?? "默认欢迎语"
let maxCount = config.number(forKey: "max_count")?.intValue ?? 0
let isFeatureEnabled = config.bool(forKey: "feature_enabled")
结构流程图
classDiagram
class ABCenterConfig {
- RemoteConfig? remoteConfig
+ static shared: ABCenterConfig
- init()
+ setup()
- setUpConfig()
+ fetchAndActivate(completionHandler)
+ string(forKey)
+ number(forKey)
+ data(forKey)
+ bool(forKey)
+ jsonValue(forKey)
}
class RemoteConfigFetchAndActivateStatus {
<<enum>>
+ successFetchedFromRemote
+ successUsingPreFetchedData
+ error
}
ABCenterConfig o-- RemoteConfig : uses
ABCenterConfig ..> RemoteConfigFetchAndActivateStatus : returns status