開關配置是一種在客戶端不用發布新版本的情況下,動態修改客戶端代碼中的處理邏輯的能力。客戶端根據拉取后臺動態配置的開關值,來控制相關處理。通過開關配置服務,您可以實現各種開關的配置、修改和推送。開關是指 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 提供強制拉取控制臺最新配置的方法