You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android如何从Firebase Remote Config的JSON中取值实现应用更新校验

修复方案

1. 移除错误的Volley解析逻辑

你已经通过FirebaseRemoteConfig.getString()接口直接获取到了远端存储的完整JSON字符串,Volley是用于发起HTTP网络请求的组件,你将JSON字符串作为URL传入Volley的请求方法,自然会触发URL无效的报错,直接删除jsonParse方法即可,不需要额外发起网络请求。

2. 修正Lessons实体类代码

Java中无Int类型,该关键字属于Kotlin,你需要替换为Java的int基础类型或者Integer包装类型,同时给属性添加public修饰符,否则Gson无法完成序列化:

public class Lessons {
    public String versionCode;
    public int priorityLevel;
}

3. 补充Remote Config初始化配置

你需要为Remote Config设置默认值,避免首次拉取失败时出现空值问题,同时将过长的拉取超时调整为合理值:

remoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        // 调整为60秒超时即可,2000秒过长无意义
        .setFetchTimeoutInSeconds(60)
        .build();
remoteConfig.setConfigSettingsAsync(configSettings);
// 设置默认值,这里传入test_json的默认JSON数组,可和控制台配置一致
Map<String, Object> defaultMap = new HashMap<>();
defaultMap.put("test_json", "[{\"versionCode\":\"1\",\"priorityLevel\":2}]");
remoteConfig.setDefaultsAsync(defaultMap);

4. 完整的拉取与解析逻辑

拉取成功后直接用Gson解析即可,解析完成后遍历集合就能拿到对应的值和本地应用版本做对比:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        remoteConfig.fetchAndActivate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    String jsonStr = remoteConfig.getString("test_json");
                    Gson gson = new GsonBuilder().create();
                    List<Lessons> lessonsList = gson.fromJson(jsonStr, new TypeToken<List<Lessons>>(){}.getType());
                    // 遍历获取值
                    for (Lessons lesson : lessonsList) {
                        String versionCode = lesson.versionCode;
                        int priorityLevel = lesson.priorityLevel;
                        // 这里可以加和本地版本对比的逻辑
                        textView.append("版本号:" + versionCode + ",优先级:" + priorityLevel + "\n");
                    }
                } else {
                    Toast.makeText(MainActivity2.this, "拉取配置失败", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
});

常见拉取失败排查

  • 检查Firebase Remote Config控制台的配置是否已经点击「发布」,仅保存未发布的配置无法拉取
  • 检查App中google-services.json配置文件是否和Firebase控制台的项目一致
  • 检查App是否已经申请网络权限

内容的提问来源于stack exchange,提问作者Gedanggoreng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:15:02