Unity集成Firebase Remote Config仅获默认值,无法获取控制台配置排查
排查Unity Firebase Remote Config无法获取控制台配置的问题
看你的日志输出,Fetch流程显示成功,但拿不到控制台新增的配置键,还残留着已删除的旧默认值,这大概率是缓存、配置发布状态或者本地默认值的问题,给你几个针对性的排查方向:
1. 先确认控制台配置已发布
这是最容易踩的坑!Firebase控制台修改Remote Config后,必须点击右上角的发布更改按钮,新配置才会推送到客户端。如果一直停留在草稿状态,客户端永远拉不到新内容——我之前好几次改完就测试,白忙活半小时才发现没点发布。
2. 清理本地缓存与旧默认值残留
你提到能看到早期已删除的默认值,说明本地缓存或代码里的默认值没清理干净:
- 检查代码里有没有
SetDefaultsAsync/SetDefaults的调用,如果之前设置过旧的默认键值对,即使控制台删了,客户端还是会优先用本地默认值。如果不需要默认值,直接删掉这部分代码;如果需要,把默认值更新成最新的键值。 - 卸载测试设备上的APP,或者在Unity编辑器里调用
PlayerPrefs.DeleteAll()清除本地缓存(Remote Config会把缓存存在PlayerPrefs里)。
3. 正确配置开发者模式(确保强制拉取生效)
你试过启用开发者模式,但要注意必须在Fetch前设置,不然FetchAsync(TimeSpan.Zero)还是会被节流限制:
void InitializeFirebase() { var remoteConfigSettings = new FirebaseRemoteConfigSettings(); remoteConfigSettings.IsDeveloperMode = true; // 开发者模式下忽略Fetch间隔限制 FirebaseRemoteConfig.SetConfigSettings(remoteConfigSettings); // 这里如果有旧的默认值设置,要么更新要么删除 // FirebaseRemoteConfig.SetDefaultsAsync(yourOldDefaults); FetchData(); }
4. 重新验证google-services.json的有效性
虽然你说文件存在,但要确认:
- 是从Firebase控制台重新下载的最新版本(如果项目配置有变更,旧的json会失效)。
- 放在Unity正确的目录:Android平台是
Assets/Plugins/Android,iOS平台是Assets/Plugins/iOS(对应GoogleService-Info.plist)。
5. 升级SDK与NDK版本
NDK r13b确实太老了,建议升级到Firebase官方推荐的NDK版本(目前推荐r21e及以上),同时把Unity的Firebase SDK更新到最新稳定版——旧版本可能存在Remote Config的缓存逻辑bug。
6. 打印所有加载的键值对验证
在FetchComplete的LastFetchStatus.Success分支里,打印所有已加载的键,确认控制台的新键是否真的被拉取到:
// 新增这段代码 var allLoadedKeys = FirebaseRemoteConfig.AllKeys; Debug.Log("=== 所有已加载的Remote Config键 ==="); foreach (var key in allLoadedKeys) { var value = FirebaseRemoteConfig.GetValue(key).StringValue; Debug.Log($"{key}: {value ?? "空值"}"); }
如果这里看不到控制台的新键,说明确实没拉取到;如果能看到,那就是你获取值时的键名拼写错误(注意大小写敏感)。
7. 排查网络与权限问题
- 确保测试设备能正常访问Firebase服务(可以先测试Firebase Auth或Database是否正常,排除网络墙的问题)。
- Android平台检查
AndroidManifest.xml里是否有网络权限:<uses-permission android:name="android.permission.INTERNET" />,Unity通常会自动添加,但有时候会被其他插件覆盖。
按照这些步骤一步步排查,应该能定位到问题。我之前遇到过几乎一模一样的情况,就是忘了发布控制台的更改,加上旧默认值没清理,解决后就正常拉取配置了。
内容的提问来源于stack exchange,提问作者Newton
相关产品推荐
相关产品推荐

