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 导入

arduino 复制代码
pod 'ABCenterConfig'

2. 代码示例

go 复制代码
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 { <> + successFetchedFromRemote + successUsingPreFetchedData + error } ABCenterConfig o-- RemoteConfig : uses ABCenterConfig ..> RemoteConfigFetchAndActivateStatus : returns status

仓库地址

GitHub

相关推荐
用户新3 小时前
V8引擎 精品漫游指南--Ignition篇(下 一) 动态执行前的事情
前端·javascript
@PHARAOH5 小时前
WHAT - GitLens vs Fork
前端
yqcoder5 小时前
前端性能优化:如何减少重绘与重排?
前端·性能优化
洋子6 小时前
Yank Note 系列 13 - 让 AI Agent 进入笔记工作流
前端·人工智能
wenzhangli78 小时前
Ooder A2UI 核心架构深度解析:WEB 拦截层的设计与实现
前端·架构
前端百草阁8 小时前
【前端性能优化全链路指南】从开发编写到构建运行的多维度实践
前端·性能优化
女生也可以敲代码9 小时前
AI时代下的50道前端开发面试题:从基础到大模型应用
前端·面试
ZhengEnCi9 小时前
M5-markconv自定义CSS样式指南 📝
前端·css·python
IT_陈寒9 小时前
SpringBoot自动配置的坑差点让我加班到天亮
前端·人工智能·后端
xingpanvip9 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua