iOS SDK 集成文档
下载SDK
导入SDK
使用CocoaPods安装,只需在项目根目录的Podfile文件中添加:
pod 'AdhocSDK', '~> 5.0.2'
或者精简包:(不可同时pod两个包)
pod 'AdhocSDKLite', '~> 5.0.2'
然后在Terminal中执行:
pod install
您也可以使用手工导入的方式
将下载得到的 AdhocSDK.framework 拖入到的Xcode工程目录Supporting Files中,在弹出的options界面中勾选 Copy items if needed,并确保 Add to targets 勾选相应的 target:

检查 TARGETS --> Build Phases --> Link Binary With Libraries 选项下是否已经加入 Security.framework,CFNetwork.framework,AdhocSDK.framework,如果没有,请手动加入。并手动链接libsqlite3.tbd和libicucore.tbd:

在 TARGETS --> Build Settings 选项下 Other Linker Flags 中设置链接器参数: -ObjC。

权限设置
1.在info.plist文件中添加相机权限:
2.为了保证用户的唯一性,SDK将设备ID存储在本地Keychain中,iOS10需在Capabilities中打开Keychain sharing
SDK初始化
在调用SDK之前,记得在AppDelegate.m中引用头文件:
#import "AdhocSDK/AdhocSDK.h"
在@selector(application:didFinishLaunchingWithOptions:)中:
AdhocSDKConfig *config = [AdhocSDKConfig defaultConfig];
//平台获得的Appkey必要
config.appKey = @"ADHOC_5dc7130b-27ad-444e-xxxxxxxxxxxxxxxx";
//debug悬浮窗开关
config.enableDebugAssist = YES;
//开启实时上报
//config.reportImmediatelyEnabled = true;
[AdhocSDK startWithConfigure:config options:launchOptions];
并设置appKey为 AppAdhoc 后台的app_key值。“app_key” 是在登录 AppAdhoc 后,创建“应用”之后获得的授权标识。
可在AppAdhoc控制台应用列表找到, 如下图红线部分:
注:请不要延迟SDK的初始化,会导致无法监听到AppDelegate里的方法,无法加载Flags信息,可视化试验无法正常渲染。
请勿在SDK基础上进行自行封装,以免影响到试验逻辑,造成试验无法正常运行。
编程模式:根据“试验变量”展示相应内容
在编程模式中,“试验变量”的值决定了展示的内容或程序的逻辑。可视化试验可跳过此步骤。
注意:试验变量值应由PM或相关A/B Testing需求制定人员在后台提前录入完毕,如下图“版本管理”红线部分:
在调用SDK之前,记得引用头文件:
#import "AdhocSDK/AdhocSDK.h"
根据所获取的试验变量设置来执行不同版本的代码,在相应的测试页面添加代码
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//获取系统生成的试验变量isNewHomePage的值
NSInteger value = [[AdhocSDK getFlag:@"isNewHomePage" default:@(0)] integerValue];
switch (value) {
case 0:
// 执行默认版本或原始版本逻辑
break;
case 1:
// 执行版本1逻辑
break;
case 2:
// 执行版本2逻辑
break;
}
}
其中,'isNewHomePage' 即是“试验变量“,应与上图中红线标识保持一致。
请注意在用户访问到试验页面时,需要触发所有变量才算作进入试验,否则将不会上报试验数据。在此示例中,“AdhocSDK getFlag:@"isNewHomePage" default:@(0)”算作触发变量“isNewHomePage”。
编程模式:上报指标
指标用于量化试验结果的好坏,AppAdhoc 后台中的试验图表根据此数据生成。
比如在进入某一逻辑分支后,可以统计点击次数。将上图中的指标“clickTimes”传入函数track实现上报指标, 每次累加1:
- (IBAction)btnClicked:(id)sender {
[AdhocSDK track:@"clickTimes" value:@(1)];
}
可视化轮播图使用说明
- UIView(Adhoc)分类添加一个属性 adhoc_idf(此属性必须是数字字符串如cell.adhoc_idf = @"1")
- SDK会自动检索当前view是否存在此属性,存在则找到对应view进行属性修改
示例
这个属性adhoc_idf
用来标识当前轮播的index
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
SDCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
long itemIndex = indexPath.item % self.imagePathsGroup.count;
//可视化编辑轮播图调用
cell.adhoc_idf = [NSString stringWithFormat:@"%ld",itemIndex];
NSString *imagePath = self.imagePathsGroup[itemIndex];
...
return cell;
}
可视化UITableView的使用说明
iOS 可视化编辑务必保障下图中这个方法有调用到indexpath这个参数,如果未使用indexPath,则cell无法绑定行号(对应编号的cell),无法保障可视化编辑列表控件可以正常编辑。
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];
可视化UILabel和UITextField的按钮使用说明
使用可视化编辑器修改文字大小,建议在控件大小范围内,如果超出控件大小文字会显示异常
集成调试
集成调试只是为验证SDK的集成是否成功(并不是真正开始试验!)。
在SDK启动时设置是否显示调试按钮
AdhocSDKConfig *config = [AdhocSDKConfig defaultConfig];
#ifdef DEBUG
config.enableDebugAssist = YES;
#else
config.enableDebugAssist = NO;
#endif
[AdhocSDK startWithConfigure:config options:launchOptions];
在Debug模式下启动APP,会出现下图中的悬浮图标:详细使用请参考iOS集成调试。
点击上面的悬浮图标,扫描后台系统“集成调试”中的二维码,进入相应试验:
开始试验
恭喜,您完成了AppAdhoc AB Testing SDK的埋点集成工作,请通知PM或相关AB Test需求制定人员,点下开始试验按钮吧!
注意:确保app_key, 试验变量字符串,指标字符串与后台截图处一一对应,否则可能出现异常或无试验数据情况。
高级功能 受众定向(需要联系管理员开启)
AppAdhoc SDK 支持预定义受众定向和自定义受众定向两种方式。
预定义受众定向功能中,开发者只需要在Appadhoc平台中选择预设的受众标签,SDK会自动采集相关信息并判定当前用户是否进入试验(例如APP版本、语言等用户标签),无需在代码中定义。
开发者也可以根据需要选择自定义手中标签,此方式需要在Appadhoc平台中填写好标签的key和value,之后再代码中为当前用户设置标签,进而实现将不符合条件的用户排除在此次试验之外。比如只想要女性用户,或30岁以下的用户参与试验等。
关于受众定向详细请参考受众定向。
注意:自定义受众定向条件应由PM或相关AB Test需求制定人员在后台提前录入完毕,如下图“受众定向”红线部分。
在运行控制/右侧定向试验:
选择分组,点击编辑用户群:
即得到受众条件的key,在下图例子中,“sex”是key:
自定义受众定向:
移动端代码中通过“custom”添加自定义标签名及标签值,这里需要动态获取标签值上传给后台,以便后台决定该用户是否满足受众定向条件(如有疑问请联系客户经理协助)
//创建定向标签
NSstring *usersex=[user Sex];
AdhocSDKConfig *config = [AdhocSDKConfig defaultConfig];
//平台获得的Appkey必要
config.appKey = @"your appKey";
//设置定向条件
config.customProperty = {@“sex”: usersex};
[AdhocSDK startWithConfigure:config options:launchOptions];
“app_key” 是在登录 AppAdhoc 后台创建“应用”之后获得的该“应用”的授权标识。
可在AppAdhoc控制台应用列表找到,如下图红线部分:
API 参考