FireBase-------Remote Config

Remote Config顾名思义远程配置,用户可以在firebase的Remoter Config页面下配置key-value。然后在应用用获取配置的相关值。

当然,前提条件同样是手机自身带有google play service ,并且Google Play Service的版本要高于Firebase的SDK版本。

集成步骤:

1、加入SDK,官网最新的SDK:

compile 'com.google.firebase:firebase-config:15.0.0'

2、获取远程配置单例对象

使用 FirebaseRemoteConfig.getInstance() 方法获取单例远程配置对象。

3、设置应用内默认参数值

       您可以在远程配置对象中设置应用内默认参数值,使得您的应用在从远程配置服务提取值之前可以按预期工作:

  1. 使用 Map 对象或存储在您应用的 res/xml 文件夹中的 XML 资源文件定义一组参数名称和默认参数值。远程配置快速入门示例应用使用 XML 文件定义默认参数名和参数值。
  2. 官网demo示例应用中所示,使用 setDefaults() 将这些值添加至远程配置对象。                                                                   

4、获取要在应用中使用的参数值

现在,您可以从远程配置对象中获取参数值。如果您在远程配置服务中设置值、提取并激活它们,这些值便可供您的应用使用。否则,您需要使用 setDefaults() 来获取配置的应用内参数值。要获取这些值,请调用下列与应用所需数据类型对应的方法,并以参数形式提供参数键:

 

 

 

5、在服务中设置参数值(若需要)

 封装后的代码如下所示:

  

 private static EchoServer sEchoServer;
    private static ScheduledExecutorService sExecutor;

    public static FirebaseRemoteConfig getRemoteConfig() {
        if (sRemoteConfig == null) {
            sRemoteConfig = FirebaseRemoteConfig.getInstance();
        }
        return sRemoteConfig;
    }

    private static FirebaseRemoteConfig sRemoteConfig;

    public static void acquireRemoteConfig() {
        sRemoteConfig = FirebaseRemoteConfig.getInstance();
        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setDeveloperModeEnabled(DEBUG)
                .build();
        sRemoteConfig.setConfigSettings(configSettings);
        sRemoteConfig.setDefaults(R.xml.remote_config_default);
       
        long cacheExpiration = 20 * 60;
        if (sRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) {
            cacheExpiration = 0;
        }
       
        sRemoteConfig.fetch(cacheExpiration)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            // After config data is successfully fetched, it must be activated before newly fetched
                            // values are returned.
                            sRemoteConfig.activateFetched();
                          
                        } else {
                           
                        }
                    }
                });
    }

    /**
     * 以固定周期频率执行任务
     */
    public static void executeFixedRate() {
        if (sExecutor == null) {
            sExecutor = Executors.newScheduledThreadPool(1);
        }
        if (sEchoServer == null) {
            sEchoServer = new EchoServer();
        }
        sExecutor.scheduleAtFixedRate(
                sEchoServer,
                0,
                20,
                TimeUnit.MINUTES);
    }

    private static class EchoServer implements Runnable {

        @Override
        public void run() {
            // acquire a remote config
            RequestRemoteConfig.acquireRemoteConfig();
        }
    }

 在Application中可以调用:RequestRemoteConfig.acquireRemoteConfig();

在拿取配置值的地方调用:RequestRemoteConfig.getRemoteConfig().getString("配置参数");

到这里,Remote Config的就讲完了~~thx.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值