开关配置是一种在客户端不用发布新版本的情况下,动态修改客户端代码中的处理逻辑的能力。客户端根据拉取后台动态配置的开关值,来控制相关处理。通过开关配置服务,您可以实现各种开关的配置、修改和推送。开关是指 key/value 的键值对。
mPaaS 提供配置管理服务(ConfigService)来实现开关配置。默认的拉取逻辑为冷启动时拉取一次,或从后台回前台时,若距离上一次拉取时间超过 半小时,也会触发一次拉取。同时,配置管理服务也提供了立即拉取的接口以及对配置项改变的监听逻辑,实现配置一旦改变就能立即刷新。
要实现开关配置管理服务,需要添加相关的 iOS SDK,并配置工程、读取配置。
使用开关配置涉及到调用 MDS 的更新发布接口,会产生相应的接口调用费用。有关接口调用的计费说明,参见 产品定价 中的实时发布计费项说明 。
前置条件
您已接入工程到 mPaaS。更多信息,请参见以下内容:
关于此任务
本文结合 开关配置代码示例,进行详细的说明介绍。
添加 SDK
根据您采用的接入方式,请选择相应的添加方式。
使用 mPaaS Xcode Extension 插件
此方式适用于 基于 mPaaS 框架接入 或 基于已有工程且使用 mPaaS 插件接入 的接入方式。
点击 Xcode 菜单项 Editor > mPaaS > 编辑工程,打开编辑工程页面。
选择 开关配置,保存后点击 开始编辑,即可完成添加。
使用 cocoapods-mPaaS 插件
此方式适用于 基于已有工程且使用 CocoaPods 接入 的接入方式。
在 Podfile 文件中,使用
mPaaS_pod "mPaaS_Config"
添加开关配置组件依赖。参考 CocoaPods 使用指南,根据需要执行
pod install
或pod update
即可完成接入。
配置工程
该步骤适用于 10.1.32 版本。由于 10.1.60 及 10.1.68 版本中内置了工程配置,所以在 10.1.60 及 10.1.68 版本中可忽略此步骤。
mPaaS 将提供的开关配置能力封装为一个 服务,使用前需要在服务管理器中注册此服务,如下图所示:
读取配置
开关键对应的值可以通过 mPaaS 控制台动态发布。在左侧导航栏中点击 实时发布 > 配置管理 > 配置键 查看具体内容。
后续操作
获取开关值
在 mPaaS 控制台 实时发布 > 配置管理 中增加需要的开关配置项,并按照平台、白名单、百分比、版本号、机型、iOS 版本等信息进行针对性下发配置。具体操作步骤,参考 配置管理。
在控制台发布了开关键后,客户端可通过调用接口获取开关键对应的键值。
+ (void)testStringForKey
{
id<APConfigService>configService = [DTContextGet() findServiceByName:@"APConfigService"];
NSString *configValue = [configService stringValueForKey:@"BillEntrance"];
assert (configValue && [configValue isKindOfClass:[NSString class]]);
}
开关键值是通过 RPC 拉取返回的,存在一定的失败几率,因此开发者在使用时要考虑到客户端本地的处理逻辑以应对拉取失败的情况。建议在客户端本地逻辑中设置开关默认值,当控制台发布了新开关时采用新的配置逻辑,拉取失败则采用本地默认逻辑。
进阶指南
客户端拉取开关配置的时机:
应用冷启动时会拉取。
回前台时,若距上次请求配置超过 30 分钟,会重新拉取。
说明30 分钟为默认的时间间隔,可在控制台的 实时发布 > 配置开关管理 页面中添加开关
Load_Config_Interval
修改此时间间隔。具体操作参见 配置管理。
动态监听开关变化
可对指定的 key 添加观察者,动态监听开关值的变化。
当触发客户端拉取开关配置时,可在回调方法里获取指定 key 对应的最新开关值。
强制拉取开关值:SDK 提供强制拉取控制台最新配置的方法