iOS Firebase Remote Config未应用的已获取值跨启动是否持久化?
Firebase Remote Config未激活的已获取值跨启动是否持久化?
好问题!我之前在做iOS项目时也特意验证过这个点,结合实际测试和对Firebase iOS SDK的行为逻辑,给你明确答案:
- 未激活的已获取值不会跨应用启动持久化
具体细节说明:
Firebase Remote Config在本地其实维护了两种状态的配置:
- 已激活的生效配置:这部分就是官方文档明确提到的会持久化的内容,只要调用过
activate()(或者触发自动激活的场景),这些值会存在本地存储里,应用重启后依然会优先使用它们。 - 已获取但未激活的候选配置:调用
fetch()成功后得到的新值,在未激活前只是临时存在于当前应用进程的内存中(仅在本次启动周期内有效)。当应用重启后,这部分临时的候选值会被清除,你再访问fetchedConfig会发现它和当前生效的配置完全一致,之前未激活的获取值已经不见了。
验证小技巧:
你可以做个简单测试来确认:
- 调用
remoteConfig.fetch(completionHandler:)获取服务端更新后的配置值 - 重启应用前,用
remoteConfig.fetchedConfig.configValue(forKey: "your_key").source查看来源,会显示.remote - 重启应用后,再执行同样的代码,会发现来源变成
.default或者.static(和当前生效配置一致)
额外建议:
如果你的业务需要保留未激活的获取值(比如要等用户完成特定操作后再激活),那得自己手动做持久化处理——比如把获取到的配置数据存在UserDefaults或者其他本地存储里,下次应用启动后,再从本地读取出来,通过activate(with:)方法手动激活这个保存的配置。
内容的提问来源于stack exchange,提问作者John Brophy
相关产品推荐
相关产品推荐

