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

相关推荐
骐骥11 小时前
鸿蒙开发使用DevTools工具调试ArkWeb组件中的前端页面
前端·harmonyos·调试·arkweb·纯鸿蒙
WHOVENLY8 小时前
【javaScript】- 笔试题合集(长期更新,建议收藏,目前已更新至31题)
开发语言·前端·javascript
指尖跳动的光8 小时前
将多次提交合并成一次提交
前端·javascript
程序员码歌8 小时前
短思考第263天,每天复盘10分钟,胜过盲目努力一整年
android·前端·后端
oden8 小时前
1 小时速通!手把手教你从零搭建 Astro 博客并上线
前端
若梦plus8 小时前
JS之类型化数组
前端·javascript
若梦plus8 小时前
Canvas 深入解析:从基础到实战
前端·javascript
若梦plus8 小时前
Canvas渲染原理与浏览器图形管线
前端·javascript
C_心欲无痕9 小时前
vue3 - 依赖注入(provide/inject)组件跨层级通信的优雅方案
前端·javascript·vue.js