本应用实现了一个基于远程API的配置管理系统,可以在应用启动时从 https://pay.ss5.xyz/switches/lists 获取配置参数,并将这些参数保存到AppStorage中供全应用使用。
json、boolean、number、string 四种数据类型{
"code": 0,
"msg": "请求成功",
"data": [
{
"name": "test_json",
"description": "test_json",
"value": "{\n \"test_json\": \"test_json\"\n}",
"type": "json"
},
{
"name": "show_update_log",
"description": "是否显示日志更新弹窗",
"value": false,
"type": "boolean"
},
{
"name": "test_number",
"description": "test_number",
"value": 123456,
"type": "number"
},
{
"name": "test_string",
"description": "test_string",
"value": "test_string",
"type": "string"
}
]
}
配置管理器,负责:
配置展示组件,用于:
import { ConfigManager } from '../common/util/ConfigManager';
// 在应用启动时初始化配置
const success = await ConfigManager.initConfig();
import { ConfigManager, ConfigValue } from '../common/util/ConfigManager';
// 方法1:使用ConfigManager(推荐,类型安全)
const showUpdateLog: boolean = ConfigManager.getConfig('show_update_log', false);
const testNumber: number = ConfigManager.getConfig('test_number', 0);
const testString: string = ConfigManager.getConfig('test_string', '');
const testJson: ESObject = ConfigManager.getConfig('test_json', {});
// 方法2:直接从AppStorage读取
const showUpdateLog = AppStorage.get('show_update_log') as boolean ?? false;
@Component
export struct MyComponent {
// 使用@StorageLink监听配置变化,确保类型安全
@StorageLink('show_update_log') showUpdateLog: boolean = false;
@StorageLink('test_number') testNumber: number = 0;
@StorageLink('test_string') testString: string = '';
@StorageLink('test_json') testJson: ESObject = {};
build() {
Column() {
Text(`显示更新日志: ${this.showUpdateLog}`)
Text(`测试数字: ${this.testNumber}`)
Text(`测试字符串: ${this.testString}`)
Text(`JSON配置: ${JSON.stringify(this.testJson)}`)
}
}
}
import { ConfigValue } from '../common/util/ConfigManager';
// 设置单个配置(类型安全)
ConfigManager.setConfig('show_update_log', true as ConfigValue);
ConfigManager.setConfig('test_number', 123 as ConfigValue);
ConfigManager.setConfig('test_string', 'new value' as ConfigValue);
// 刷新所有配置
const success: boolean = await ConfigManager.refreshConfig();
// 从API配置中获取是否显示更新日志的设置
const showUpdateLog = ConfigManager.getConfig('show_update_log', false);
if (!showUpdateLog) {
Logger.info(UpdateLogManager.TAG, '更新日志功能已通过API配置禁用');
return false;
}