文档管理中心
我的

日落公告:HMS Toolkit服务当前已不再进行版本更新。中国区域的服务将在2026-11-30日落下线,日落后将不再提供服务。

指南HMS Toolkit使用指导Convertor手工转换指导书AppGallery Connect手工转换指导书Remote Configuration

Remote Configuration

准备工作

  1. 您若需要应用支持Remote Configuration,必须完成接入准备,请参见AppGallery Connect开发服务使用入门。
  2. 华为远程配置服务详情请参见远程配置服务简介,相关API详情请参见远程配置API参考。

fetchAndActivate()

此API的功能是获取云端配置并激活。在Firebase中此功能由FirebaseRemoteConfig.fetchAndActivate()一次性完成,返回值是存储了操作是否成功的GMS的Task对象。而在AGC中,操作的粒度更精确,分为了获取配置和激活配置两步来完成:AGConnectConfig.fetch()完成获取配置的操作,返回值是存储了配置数据的HMS的Task对象,再通过此对象的addOnSuccessListner()方法,成功获取配置后,在onSuccess()的回调中用AGConnectConfig.apply(ConfigValues)完成激活配置。下面给出简易的代码示例。

使用Firebase的fetchAndActivate()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  2. config.fetchAndActivate().addOnCompleteListener(new OnCompleteListener<Boolean>(){
  3. @Override
  4. public void onComplete(Task<Boolean> task) {
  5. if (task.isSuccessful()) {
  6. Log.d("TAG", "FirebaseRemoteConfig fetched");
  7. } else {
  8. Log.d("TAG", "FirebaseRemoteConfig error:" + task.getResult());
  9. }
  10. }
  11. });

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  2. if (GlobalEnvSetting.isHms()) {
  3. ((com.huawei.agconnect.remoteconfig.AGConnectConfig) config.getHInstance()).fetch()
  4. .addOnSuccessListener(new com.huawei.hmf.tasks.OnSuccessListener<com.huawei.agconnect.remoteconfig.ConfigValues>() {
  5. @Override
  6. public void onSuccess(ConfigValues configValues) {
  7. com.huawei.agconnect.remoteconfig.AGConnectConfig.getInstance().apply(configValues);
  8. Log.d("TAG", "AppGallery-connect RemoteConfig fetched and activated");
  9. }
  10. }).addOnFailureListener(new com.huawei.hmf.tasks.OnFailureListener(){
  11. @Override
  12. public void onFailure(Exception e){
  13. Log.d("TAG", "AppGallery-connect RemoteConfig error:" + e.getMessage());
  14. }
  15. });
  16. } else {
  17. ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).fetchAndActivate()
  18. .addOnCompleteListener(new com.google.android.gms.tasks.OnCompleteListener<Boolean>() {
  19. @Override
  20. public void onComplete(com.google.android.gms.tasks.Task<Boolean> task) {
  21. if (task.isSuccessful()) {
  22. Log.d("TAG", "FirebaseRemoteConfig fetched");
  23. } else {
  24. Log.d("TAG", "FirebaseRemoteConfig error:" + task.getResult());
  25. }
  26. }
  27. });
  28. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();
  2. config.fetch().addOnSuccessListener(new com.huawei.hmf.tasks.OnSuccessListener<com.huawei.agconnect.remoteconfig.ConfigValues>() {
  3. @Override
  4. public void onSuccess(com.huawei.agconnect.remoteconfig.ConfigValues configValues) {
  5. config.apply(configValues);
  6. Log.d("TAG", "AppGallery-connect RemoteConfig fetched and activated");
  7. }
  8. }).addOnFailureListener(new com.huawei.hmf.tasks.OnFailureListener() {
  9. @Override
  10. public void onFailure(Exception e) {
  11. Log.d("TAG", "AppGallery-connect RemoteConfig error:" + e.getMessage());
  12. }
  13. });

activate()

此API的作用是激活最近一次获取的配置信息,返回值是存储了激活结果是否成功的信息的GMS的Task对象。在AGC中,通过AGConnectConfig.apply(ConfigValues)方法来激活配置信息。与Firebase不同的是,AGC中的激活方法需要的ConfigValues对象是由fetch方法返回的,因此两者需要配合使用。下面给出简易代码示例。

使用Firebase的activate()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  2. config.activate().addOnCompleteListener(new OnCompleteListener<Boolean>(){
  3. @Override
  4. public void onComplete(Task<Boolean> task) {
  5. if (task.isSuccessful()) {
  6. Log.d("TAG", "FirebaseRemoteConfig fetched");
  7. } else {
  8. Log.d("TAG", "FirebaseRemoteConfig error:" + task.getResult());
  9. }
  10. }
  11. });

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  2. if (GlobalEnvSetting.isHms()) {
  3. ((com.huawei.agconnect.remoteconfig.AGConnectConfig) config.getHInstance()).fetch()
  4. .addOnSuccessListener(new com.huawei.hmf.tasks.OnSuccessListener<com.huawei.agconnect.remoteconfig.ConfigValues>() {
  5. @Override
  6. public void onSuccess(ConfigValues configValues) {
  7. com.huawei.agconnect.remoteconfig.AGConnectConfig.getInstance().apply(configValues);
  8. Log.d("TAG", "AppGallery-connect RemoteConfig fetched and activated");
  9. }
  10. }).addOnFailureListener(new com.huawei.hmf.tasks.OnFailureListener(){
  11. @Override
  12. public void onFailure(Exception e){
  13. Log.d("TAG", "AppGallery-connect RemoteConfig error:" + e.getMessage());
  14. }
  15. });
  16. } else {
  17. ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).activate()
  18. .addOnCompleteListener(new com.google.android.gms.tasks.OnCompleteListener<Boolean>() {
  19. @Override
  20. public void onComplete(com.google.android.gms.tasks.Task<Boolean> task) {
  21. if (task.isSuccessful()) {
  22. Log.d("TAG", "FirebaseRemoteConfig activated");
  23. } else {
  24. Log.d("TAG", "FirebaseRemoteConfig error:" + task.getResult());
  25. }
  26. }
  27. });
  28. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();
  2. config.fetch().addOnSuccessListener(new com.huawei.hmf.tasks.OnSuccessListener<com.huawei.agconnect.remoteconfig.ConfigValues>() {
  3. @Override
  4. public void onSuccess(com.huawei.agconnect.remoteconfig.ConfigValues configValues) {
  5. config.apply(configValues);
  6. Log.d("TAG", "AppGallery-connect RemoteConfig fetched and activated");
  7. }
  8. }).addOnFailureListener(new com.huawei.hmf.tasks.OnFailureListener() {
  9. @Override
  10. public void onFailure(Exception e) {
  11. Log.d("TAG", "AppGallery-connect RemoteConfig error:" + e.getMessage());
  12. }
  13. });

activateFetched()

此API功能与activate()相同,已经被废弃,代码修改方案与activate()相同。

fetch(long)

此API的功能是根据输入的时间间隔,定期获取云端配置信息。在Firebase中返回值是一个GMS的Task<Void>对象,代表了fetch这个操作。而在AGC中,fetch(long)的返回值是HMS的Task<ConfigValues>对象,包含了从云端获取的配置信息,用于后续激活。下面给出简易的代码示例。

使用Firebase的fetch(long)方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. long time = 1;
  2. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  3. Task<Void> fetch = config.fetch(time);

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. long time = 1;
  2. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  3. if (GlobalEnvSetting.isHms()) {
  4. com.huawei.hmf.tasks.Task<com.huawei.agconnect.remoteconfig.ConfigValues> fetch =
  5. ((com.huawei.agconnect.remoteconfig.AGConnectConfig) config.getHInstance()).fetch(time);
  6. // 根据后续业务逻辑决定如何处理这个存储了配置信息的Task对象
  7. } else {
  8. com.google.android.gms.tasks.Task<Void> fetch =
  9. ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).fetch(time);
  10. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. long time = 1;
  2. AGConnectConfig config = AGConnectConfig.getInstance();
  3. com.huawei.hmf.tasks.Task<com.huawei.agconnect.remoteconfig.ConfigValues> fetch = config.fetch(time);

fetch()

此API用于获取云端配置信息。在Firebase中返回值是一个GMS的Task<Void>对象,代表了fetch这个操作。而在AGC中,fetch()的返回值是HMS的Task<ConfigValues>对象,包含了从云端获取的配置信息,用于后续激活。下面给出简易的代码示例。

使用Firebase的fetch()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  2. Task<Void> fetch = config.fetch();

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  2. if (GlobalEnvSetting.isHms()) {
  3. com.huawei.hmf.tasks.Task<com.huawei.agconnect.remoteconfig.ConfigValues> fetch =
  4. ((com.huawei.agconnect.remoteconfig.AGConnectConfig) config.getHInstance()).fetch();
  5. // 根据后续业务逻辑决定如何处理这个存储了配置信息的Task对象
  6. } else {
  7. com.google.android.gms.tasks.Task<Void> fetch =
  8. ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).fetch();
  9. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();
  2. com.huawei.hmf.tasks.Task<com.huawei.agconnect.remoteconfig.ConfigValues> fetch = config.fetch();

getAll()

此API的功能是获取所有的云端配置信息,返回值是一个Map对象。在Firebase中,Map的Value值是FirebaseRemoteConfigValue对象;而在AGC中,使用AGConectConfig.getMergedAll()实现这个功能,但是返回的Map中的Value是Object对象。您需要根据具体的业务需求进行后续的处理。下面给出简易的代码示例。

使用Firebase的getAll()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  2. Map<String, FirebaseRemoteConfigValue> map = config.getAll();

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  2. if (GlobalEnvSetting.isHms()) {
  3. Map<String, Object> mapAGC = ((com.huawei.agconnect.remoteconfig.AGConnectConfig) config.getHInstance()).getMergedAll();
  4. //根据业务需求处理mapAGC,如果您需要String类型的Value值,可以直接使用toString()方法
  5. //如果需要其他基本类型的Value值,可以使用类似Double.parseDouble(Object.toString())的一系列方法来处理
  6. } else {
  7. Map<String, com.google.firebase.remoteconfig.FirebaseRemoteConfigValue> mapFirebase = ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).getAll();
  8. //根据业务需求处理mapFirebase
  9. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();
  2. java.util.Map<String, Object> mapAGC = config.getMergedAll();

reset()

此API的作用是删除所有已经激活的/获取的,以及默认的配置信息,并且重置所有Firebase的远程配置设置,返回值是一个GMS的Task对象,代表了删除这个任务。而在AGC中,使用AGConectConfig.clearAll()提供这个功能,区别在于此API没有返回值。下面给出简易的代码示例。

使用Firebase的reset()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  2. Task<Void> res = config.reset();

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  2. if (GlobalEnvSetting.isHms()) {
  3. ((com.huawei.agconnect.remoteconfig.AGConnectConfig)config.getHInstance()).clearAll();
  4. } else {
  5. com.google.android.gms.tasks.Task<Void> res = ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).reset();
  6. //根据后续业务需求处理这个Task对象
  7. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();
  2. config.clearAll();

getSource()

此API的作用是获取FirebaseRemoteConfigValue对象的来源,返回值是int。而在AGC中,返回值是枚举类型SOURCE。除此之外,在Firebase中,方法的调用对象就是存储了配置信息的对象,因此此功能不需要入参,而在AGC中,方法的调用对象并不是存储了配置信息的对象,因此需要给方法传入Key值来获取该Key值所对应的来源。

下面给出对应关系。

下面给出简易代码示例。

使用Firebase的getSource()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  2. int res = config.getValue("Example").getSource();

在Add HMS API模式下的代码修改示例(在插件转换后,生成的xmsadapter模块中会包含下面用到的ExtensionRemoteConfig、GlobalEnvSetting等类):

收起
自动换行
深色代码主题
复制
  1. ExtensionRemoteConfig config = ExtensionRemoteConfig.getInstance();
  2. if (GlobalEnvSetting.isHms()) {
  3. com.huawei.agconnect.remoteconfig.AGConnectConfig.SOURCE sourceAGC = ((com.huawei.agconnect.remoteconfig.AGConnectConfig)config.getHInstance()).getSource("Example");
  4. //根据后续业务需求处理这个枚举类型的结果
  5. } else {
  6. int sourceFirebase = ((com.google.firebase.remoteconfig.FirebaseRemoteConfig) config.getGInstance()).getValue("Example").getSource();
  7. //根据后续业务需求处理这个int值
  8. }

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();
  2. com.huawei.agconnect.remoteconfig.AGConnectConfig.SOURCE sourceAGC = config.getSource("Example");
  3. //根据后续业务需求处理这个枚举类型的结果

setConfigSettingsAsync(FirebaseRemoteConfigSettings settings)

该API的作用是异步更改此FirebaseRemoteConfig实例的设置。 而在AGC中,当前仅支持设置开发者模式,因此没有提供Builder类。对于此API的转换,如果是Add HMS API模式,建议先转换为使用同步接口setConfigSettings(FirebaseRemoteConfigSettings),然后就可以用工具自动转换了。下面给出简易代码示例。

使用Firebase的setConfigSettingsAsync(FirebaseRemoteConfigSettings)的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfigSettings firebaseRemoteConfigSettings = new FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(true).build();
  2. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  3. Task<Void> setAsync = remoteConfig.setConfigSettingsAsync(firebaseRemoteConfigSettings);

在Add HMS API模式下的代码修改示例,将原始代码修改为示例样式后再使用工具进行自动转换:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfigSettings firebaseRemoteConfigSettings = new FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(true).build();
  2. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  3. remoteConfig.setConfigSettings(firebaseRemoteConfigSettings);

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. //需要先将开发者模式的设置值获取出来放入isDeveloperMode
  2. Boolean isDeveloperMode = true;
  3. AGConnectConfig remoteConfig = AGConnectConfig.getInstance();
  4. remoteConfig.setDeveloperMode(isDeveloperMode);

setDefaultsAsync(Map<String, Object>)

该API的作用是使用给定的Map异步设置默认配置。而在AGC中,当前仅提供同步设置默认配置的API。您可以先将代码修改为使用同步接口FirebaseRemoteConfig.setDefaults(Map<String,Object>),然后就可以使用工具进行自动转换。下面给出简易代码示例。

使用异步接口setDefaultsAsync(Map<String, Object>)的代码场景:

收起
自动换行
深色代码主题
复制
  1. Map<String, Object> defaults = new HashMap<>();
  2. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  3. Task<Void> setAsync = remoteConfig.setDefaultsAsync(defaults);

代码修改示例如下,修改后可以用工具自动转换:

收起
自动换行
深色代码主题
复制
  1. Map<String, Object> defaults = new HashMap<>();
  2. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  3. remoteConfig.setDefaults(defaults);

setDefaultsAsync(int)

该API的作用是使用给定的int值异步设置默认配置。而在AGC中,当前仅提供同步设置默认配置的API。您可以先将代码修改为使用同步接口FirebaseRemoteConfig.setDefaults(int),然后就可以使用工具进行自动转换。下面给出简易代码示例。

使用异步接口setDefaultsAsync(int)的代码场景:

收起
自动换行
深色代码主题
复制
  1. int defaults = 0;
  2. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  3. Task<Void> setAsync = remoteConfig.setDefaultsAsync(defaults);

代码修改示例如下,修改后可以用工具自动转换:

收起
自动换行
深色代码主题
复制
  1. int defaults = 0;
  2. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  3. remoteConfig.setDefaults(defaults);

FirebaseRemoteConfigServerException()

该API是返回与Firebase远程配置服务器交互的内部事件,FirebaseRemoteConfigServerException(int httpStatusCode, java.lang.String detailMessage)该用法使用HTTP状态码和给定的消息创建出FirebaseRemoteConfig服务异常。在AGC对应的方法实现AGCConfigException(java.lang.String msg, int code)中,参数的位置发生了变化,第一个参数msg为异常消息,第二个参数为异常错误码。下面给出简易代码示例。

使用Firebase的FirebaseRemoteConfigServerException()方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfigServerException firebaseRemoteConfigServerException = new FirebaseRemoteConfigServerException(1, "test");

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGCConfigException firebaseRemoteConfigServerException = new AGCConfigException("test", 1);

getKeysByPrefix(String prefix)

该API的作用为返回具有给定前缀的所有FirebaseRemoteConfig参数键的集合。此功能在AGC中可由其他接口组合实现,通过getMergedAll返回全部数据,再根据前缀过滤对应的Key值。下面给出简易代码示例。

使用Firebase的getKeysByPrefix(String prefix)方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. java.lang.String prefix = "test";
  2. java.util.Set<String> hReturn = FirebaseRemoteConfig.getKeysByPrefix(prefix);

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. java.lang.String prefix = "test";
  2. java.util.Set<String> keySet = AGConnectConfig.getInstance().getMergedAll().keySet();
  3. java.util.Set<String> hReturn = new HashSet<>();
  4. for (String key : keySet) {
  5. if (key.startsWith(prefix)) {
  6. hReturn.add(key);
  7. }
  8. }

getValue(String key)

该API的作用为以FirebaseRemoteConfigValue形式返回给定键的参数值。下面给出简易代码示例。

使用Firebase的getValue(String key)方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. String key = "test";
  2. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
  3. FirebaseRemoteConfigValue value = config.getValue(key);

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. String key = "test";
  2. java.lang.Object hReturn = AGConnectConfig.getInstance().getMergedAll().get(key);

getInstance(FirebaseApp app)

该API的作用是将FirebaseRemoteConfig实例化,返回的是给定FirebaseApp的Firebase远程配置实例,是带FirebaseApp参数的实例化用法。 而AGC中FirebaseApp对应的方法是默认直接支持的,所以转换之后,该API将替换为无参。下面给出简易代码示例。

使用Firebase的getInstance(FirebaseApp app)方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance(com.google.firebase.FirebaseApp.getInstance());

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig config = AGConnectConfig.getInstance();

setDeveloperModeEnabled(boolean enabled)

该API的作用是打开或关闭开发人员模式设置。在firebase中是FirebaseRemoteConfigSettings.Builder下的方法,而AGC中没有对应Builder类,可以直接设置是否开发者模式。下面给出简易代码示例。

使用Firebase的setDeveloperModeEnabled方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfigSettings firebaseRemoteConfigSettings = new FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(true).build();

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. //需要先将开发者模式的设置值获取出来放入isDeveloperMode
  2. Boolean isDeveloperMode = true;
  3. AGConnectConfig remoteConfig = AGConnectConfig.getInstance();
  4. remoteConfig.setDeveloperMode(isDeveloperMode);

FirebaseRemoteConfig异常相关方法

FirebaseRemoteConfig的异常方法,在AGC中都可以用AGCConfigException(String msg, int code)方法获取。具体列表如下:

展开

Firebase

AppGallery-connect

FirebaseRemoteConfigClientException(String detailMessage)

AGCConfigException(String msg, int code)

FirebaseRemoteConfigClientException(String detailMessage, Throwable cause)

FirebaseRemoteConfigException(String detailMessage)

FirebaseRemoteConfigException(String detailMessage, Throwable cause)

FirebaseRemoteConfigFetchThrottledException(long throttleEndTimeMillis)

FirebaseRemoteConfigServerException(int httpStatusCode, String detailMessage)

FirebaseRemoteConfigServerException(int httpStatusCode, String detailMessage, Throwable cause)

FirebaseRemoteConfigValue类相关方法

FirebaseRemoteConfigValue在AGC中无对应对象封装,其实现可以通过AGConnectConfig中方法获取,var值需要通过AGConnectConfig.getInstance().getMergedAll()方法获取。

展开

Firebase

AppGallery-connect

public abstract boolean asBoolean()

AGConnectConfig.getValueAsBoolean(String var1)

public abstract byte[] asByteArray()

AGConnectConfig.getValueAsByteArray(String var1)

public abstract double asDouble()

AGConnectConfig.getValueAsDouble(String var1)

public abstract long asLong()

AGConnectConfig.getValueAsLong(String var1)

public abstract java.lang.String asString()

AGConnectConfig.getValueAsString(String var1)

setDefaults(int)

属于FirebaseRemoteConfig中的方法。该API的作用是使用XML资源设置默认配置。而在AGC中也有提供相应能力的方法,但是AGC支持的XML资源文件格式与Firebase支持的XML资源文件格式不同。因此需要先将Firebase格式的XML资源读取成一个Map后,再调用AGConnectConfig.applyDefault(Map<String,Object>)来完成配置。您可以使用下面的代码来读取Firebase格式的XML资源(需要借助AGC的相关接口),或者您也可以借助工具将XML资源修改为AGC的格式。

读取Firebase格式的XML资源的代码示例:

收起
自动换行
深色代码主题
复制
  1. public Map<java.lang.String, java.lang.Object> readXml2Map(int resId) {
  2. Map<java.lang.String, java.lang.Object> defaultsMap = new HashMap<>();
  3. Context context = AGConnectInstance.getInstance().getContext();
  4. try {
  5. Resources resources = context.getResources();
  6. if (resources == null) {
  7. return defaultsMap;
  8. }
  9. XmlResourceParser xmlParser = resources.getXml(resId);
  10. String curTag = null;
  11. String key = null;
  12. String value = null;
  13. int eventType = xmlParser.getEventType();
  14. while (eventType != XmlResourceParser.END_DOCUMENT) {
  15. if (eventType == XmlResourceParser.START_TAG) {
  16. curTag = xmlParser.getName();
  17. } else if (eventType == XmlResourceParser.END_TAG) {
  18. if (xmlParser.getName().equals("entry")) {
  19. if (key != null && value != null) {
  20. defaultsMap.put(key, value);
  21. }
  22. key = null;
  23. value = null;
  24. }
  25. curTag = null;
  26. } else if (eventType == XmlResourceParser.TEXT) {
  27. if (curTag != null) {
  28. if ("key".equals(curTag)) {
  29. key = xmlParser.getText();
  30. } else if ("value".equals(curTag)) {
  31. value = xmlParser.getText();
  32. }
  33. }
  34. }
  35. eventType = xmlParser.next();
  36. }
  37. } catch (XmlPullParserException e) {
  38. Log.e("readXml2Map", "parse default values xml failed", e);
  39. }catch (IOException e){
  40. Log.e("readXml2Map", "parse default values xml failed", e);
  41. }
  42. return defaultsMap;
  43. }

使用Firebase的setDefaults(int)方法的代码场景:

收起
自动换行
深色代码主题
复制
  1. FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
  2. remoteConfig.setDefaults(R.id.XML);

在To HMS API模式下的代码修改示例:

收起
自动换行
深色代码主题
复制
  1. AGConnectConfig remoteConfig = AGConnectConfig.getInstance();
  2. remoteConfig.applyDefault(readXml2Map(R.id.XML));