全部产品
Search
文档中心

移动开发平台mPaaS:接入 Android

更新时间:Nov 17, 2023

本文介绍如何集成 mPaaS 提供的开关配置功能。

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

使用开关配置涉及到调用 MDS 的更新发布接口,会产生相应的接口调用费用。有关接口调用的计费说明,参见 产品定价 中的实时发布计费项说明 。

整个过程分为以下三步:

  1. 添加 SDK

  2. 初始化 mPaaS(仅原生 AAR 接入需要)

  3. 使用 SDK

前置条件

添加 SDK

原生 AAR 方式

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

组件化方式

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

更多信息,参考 管理组件依赖

初始化 mPaaS

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

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

public class MyApplication extends Application {
    
    @Override
    public void onCreate() {
        super.onCreate();
        // mPaaS 初始化
        MP.init(this);    
    }
}

详情请参考:初始化 mPaaS

使用 SDK

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

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

  1. 在 mPaaS 控制台的 实时发布 > 配置开关管理 页面中增加需要的开关配置项,并按照平台、白名单、百分比、版本号、机型、Android 版本等信息进行针对性下发配置。具体操作步骤参考 配置管理

  2. 当控制台发布了开关键后,客户端可通过调用接口获取开关键对应的键值。

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

    重要

    监听器会以软引用形式存在,当内存较低时,系统会进行回收。因此请尽量避免使用全局监听,而是采用随时注册、用完移除的方式使用开关监听。

     public class MPConfigService {
         /**
          * 获取开关
          *
          * @param key
          * @return
          */
         public static String getConfig(String key);
         /**
          *  加载开关,默认达到半小时间隔才会去服务端拉取最新开关。
          */
         public static void loadConfig();
         /**
          * 马上加载开关
          *
          * @param delay 加载开关的延迟时间,单位毫秒,0 为立刻加载
          */
         public static void loadConfigImmediately(long delay);
         /**
          * 注册开关改变监听器
          * @param configChangeListener 监听器
          * @return
          */
         public static boolean addConfigChangeListener(ConfigService.ConfigChangeListener configChangeListener);
         /**
          * 移除开关改变监听器
          * @param configChangeListener 监听器
          */
         public static void removeConfigChangeListener(ConfigService.ConfigChangeListener configChangeListener);
     }