全部产品
云市场

iOS 接入

更新时间:2019-09-25 10:26:43

一、远程配置SDK版本以及相关依赖

iOS端远程配置SDK使用cocoapod做依赖管理

  • 指定仓库
  1. source 'https://github.com/CocoaPods/Specs.git'
  2. source 'https://github.com/aliyun/aliyun-specs.git'
  3. source 'git@gitlab-ce.emas-poc.com:EMAS-iOS/emas-specs.git'
  • podfile文件添加依赖
  1. pod 'NetworkSDK','10.0.4.4'
  2. pod 'TBAccsSDK', '10.0.7'
  3. pod 'UserTrack','6.3.5.100005-poc'
  4. pod 'orange', '10.0.0'
  5. pod 'Reachability', '3.2'
  6. pod 'FMDB', '2.7.2'

二、远程配置初始化

作为基础中间件使用方尽量早的初始化OrangeSDK,建议在程序启动后在Appdelegate中的didFinishLaunchingWithOptions回调中完成初始化工作

初始化代码如下:

  1. #import <orange/Orange.h>
  2. @interface AppDelegate ()
  3. @end
  4. @implementation AppDelegate
  5. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  6. /**
  7. * 步骤一、设置集成远程配置SDK应用的AppKey与AppSecret
  8. */
  9. [Orange setAppKey:xxxKey andSecret:xxxSecret];
  10. /**
  11. * 步骤二、设置远程配拉取置服务Host (注意:配置SDK支持 线上、预发、日常三个环境设置Host,如没预发、日常环境 host参数如下传nil即可)
  12. */
  13. [Orange setOrangeDataCenterOnlineHost:xxxHost debugHost:nil dailyHost:nil];
  14. /**
  15. * 步骤三、设置配置SDK内部长连通道服务Host (注意:Host数组依次为 线上、预发、日常对应域名,如没有预发、日常环境 Host参数如下传@“”即可)
  16. */
  17. [Orange setOrangeBetaModeAccsHost:@[@"HostAddress",@"",@""]];
  18. /**
  19. * 步骤四、 选择模式启动Orange配置SDK 完成初始化 (Orange配置更新模式分为三种 1.旁路模式 2.前后台切换事件模式 3.前两种的混合模式 如下只开启事件模式)
  20. */
  21. [Orange runMode:OrangeUpateModeEvent];
  22. return YES;
  23. }

三、远程配置接口调用说明

2.1、远程配置SDK简介

远程配置SDK对外的接口类是Orange.h,所有的接口调用都定义在这个类里;

配置级别级别概念:

配置分为DEFAULTHIGH两个级别:

HIGH级别: 远程配置SDK在初始化时只会拉取high级别的配置, 为了减轻APP初始化的压力,只有必须在APP启动就需要的配置才可以申请设置为high。

DEFAULT级别:

1、首次启动应用,远程配置SDK不会主动拉取default级别配置,业务需要在使用配置的地方通过getconfig触发拉取配置到本地。

2、业务首次拉取会返回默认值,注册了监听的话,拉取成功后会异步回调通知。

3、注册监听后,当本地有缓存时,应用启动时会加载本地缓存,在加载本地缓存成功后异步回调通知。

2.2 远程配置接口调用详细说明

— 获取KV配置内容接口1

  1. /**
  2. * 获取配置内容,非hig级别配置,首次获取返回空,并触下载相应的配置,如果下载成功,业务方第二次调用此接口会返回远端配置
  3. *
  4. * @param groupName 组名称,不能为nil,区分大小写
  5. * @param key 配置的key,不能为nil,区分大小写
  6. * @param defaultConfig 缺省值,可以为nil
  7. * @param isDefault 返回的是否为缺省值,可以为nil
  8. *
  9. * @return 配置的内容
  10. */
  11. + (id)getConfigByGroupName:(NSString *)groupName
  12. key:(NSString *)key
  13. defaultConfig:(id)defaultConfig
  14. isDefault:(BOOL *)isDefault;

— 获取KV配置内容接口2

  1. /**
  2. * 获取整个组配置(和服务端配置name对应)
  3. *
  4. * @param groupName 配置组的名字,区分大小写
  5. *
  6. * @return 组的配置,如为空,返回nil
  7. */
  8. + (NSDictionary *)getGroupConfigByGroupName:(NSString *)groupName;

— 获取自定配置接口

  1. /**
  2. * 获取整个Custom自定义组配置(和服务端的组对应)
  3. *
  4. * @param groupName 配置组的名字,区分大小写
  5. *
  6. * @return 组的配置,如为空,返回nil
  7. */
  8. + (NSString *)getCustomGroupConfigByGroupName:(NSString *)groupName;

— 设置端上远程配置SDK自定义策略接口

  1. /**
  2. 提供业务方设置自定义策略表达式 (策略表达式值必须是应用唯一固定)
  3. @param key 策略表达式对应的key
  4. @param value 策略表达式对应的value
  5. */
  6. + (void)setCustomCandidate:(NSString *)key value:(NSString *)value;

四、远程配置接口调用示例

1.获取一个配置对应的值:

  1. NSString *value = [Orange getConfigByGroupName: @"test_hig_config"
  2. key: @"test_key"
  3. defaultConfig: nil
  4. isDefault: nil];

2.获取整个组的配置:

  1. NSDictionary *groupConfig = [Orange getGroupConfigByGroupName: @"test"];

3.当配置更新完毕后,SDK发送更新成功消息,监控消息的名字是,小写的groupname(配置名)_orange

4.下面是配置名为‘test_group_name’拼装监控消息名的例子,:test_group_name_orange,全部为小写。

监控更新消息代码示例:

  1. [[NSNotificationCenter defaultCenter] addObserver: self
  2. selector: @selector(groupConfig:)
  3. name: @"test_group_name_orange"
  4. object: nil];
  5. - (void)groupConfig:(NSNotification *)notification
  6. {
  7. NSDictionary *configDict = notification.object;
  8. id configContent = [configDict objectForKey:@"content"];
  9. //做自己的逻辑
  10. }