全部产品

接入 Android

更新时间:2020-06-16 17:52:20

开关配置是一种在客户端不用发布新版本的情况下,动态修改客户端代码处理逻辑的能力。客户端根据拉取后台动态配置的开关值,来控制相关处理。通过开关配置服务,您可以实现各种开关的配置、修改、推送。开关是指 key-value 的键值对。

本文介绍如何集成 mPaaS 提供的开关配置功能。目前,开关配置支持 原生 AAR 接入mPaaS Inside 接入组件化接入 三种接入方式。

整个过程分为以下三步:

  1. 添加 SDK
  2. 初始化 mPaaS(仅原生 AAR 接入或 mPaaS Inside 接入需要)
  3. 使用 SDK

前置条件

添加 SDK

原生 AAR 方式

参考 AAR 组件管理,通过 组件管理(AAR) 在工程中安装 开关配置(CONFIGSERVICE)组件。

mPaaS Inside 方式

在工程中通过 组件管理 安装 开关配置(CONFIGSERVICE)组件。

更多信息,请参考 管理组件依赖 > 增删组件依赖

组件化方式

在 Portal 和 Bundle 工程中通过 组件管理 安装 开关配置(CONFIGSERVICE) 组件。

更多信息,请参考 管理组件依赖 > 增删组件依赖

初始化 mPaaS

如果您使用原生 AAR 接入或 mPaaS Inside 接入方式,则需要初始化 mPaaS。

请在 Application 对象中添加以下代码:

  1. public class MyApplication extends Application {
  2. @Override
  3. protected void attachBaseContext(Context base) {
  4. super.attachBaseContext(base);
  5. // mPaaS 初始化回调设置
  6. QuinoxlessFramework.setup(this, new IInitCallback() {
  7. @Override
  8. public void onPostInit() {
  9. // 此回调表示 mPaaS 已经初始化完成,mPaaS 相关调用可在这个回调里进行
  10. }
  11. });
  12. }
  13. @Override
  14. public void onCreate() {
  15. super.onCreate();
  16. // mPaaS 初始化
  17. QuinoxlessFramework.init();
  18. }
  19. }

使用 SDK

mPaaS 提供开关配置管理接口 MPConfigService 来实现开关配置。

实现开关配置的操作步骤如下:

  1. 在 mPaaS 控制台的 实时发布 > 配置开关管理 页面中增加需要的开关配置项,并按照平台、白名单、百分比、版本号、机型、Android 版本等信息进行针对性下发配置。具体操作步骤参考 配置管理
  2. 当控制台发布了开关键后,客户端可通过调用接口获取开关键对应的键值。

    开关配置管理接口 MPConfigService 对外暴露了很多接口,根据命名就能了解接口的含义,以下为各个接口及注释:

    1. public class MPConfigService {
    2. /**
    3. * 获取开关
    4. *
    5. * @param key
    6. * @return
    7. */
    8. public static String getConfig(String key);
    9. /**
    10. * 加载开关,默认达到半小时间隔才会去服务端拉取最新开关。
    11. */
    12. public static void loadConfig();
    13. /**
    14. * 马上加载开关
    15. *
    16. * @param delay 加载开关的延迟时间,单位毫秒,0 为立刻加载
    17. */
    18. public static void loadConfigImmediately(long delay);
    19. /**
    20. * 注册开关改变监听器
    21. * @param configChangeListener 监听器
    22. * @return
    23. */
    24. public static boolean addConfigChangeListener(ConfigService.ConfigChangeListener configChangeListener);
    25. /**
    26. * 移除开关改变监听器
    27. * @param configChangeListener 监听器
    28. */
    29. public static void removeConfigChangeListener(ConfigService.ConfigChangeListener configChangeListener);
    30. }