iOS SDK 集成文档

iOS SDK API 参考

下载SDK

AppAdhoc iOS SDK

导入SDK

使用CocoaPods安装,只需在项目根目录的Podfile文件中添加:

pod 'AdhocSDK', '~> 4.3.0'

然后在Terminal中执行:

pod install

您也可以使用手工导入的方式

Objective-C  |  Swift

将下载得到的 AdhocSDK.framework 拖入到的Xcode工程目录Supporting Files中,在弹出的options界面中勾选 Copy items if needed,并确保 Add to targets 勾选相应的 target:

引入SDK

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

引入SDK

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

链接器参数

新建"Bridging-Header.h"文件,并在该文件中引入AdhocSDK头文件@import AdhocSDK,在 TARGETS —> Build Settings 选项下 Objective-C Bridging Header 写入"Bridging-Header.h"文件的相对路径。

权限设置

1.在info.plist文件中添加相机权限: 相机

2.为了保证用户的唯一性,SDK将设备ID存储在本地Keychain中,iOS10需在Capabilities中打开Keychain sharing 相机

SDK初始化

在调用SDK之前,记得在AppDelegate.m中引用头文件:

#import "AdhocSDK/AdhocSDK.h"

在@selector(application:didFinishLaunchingWithOptions:)中:

Objective-C  |  Swift
AdhocSDKConfig *config = [AdhocSDKConfig defaultConfig];
//平台获得的Appkey必要
config.appKey = @"ADHOC_5dc7130b-27ad-444e-xxxxxxxxxxxxxxxx";
//debug悬浮窗开关
config.enableDebugAssist = YES;
[AdhocSDK startWithConfigure:config options:launchOptions];
var config:AdhocSDKConfig = AdhocSDKConfig.defaultConfig() as! AdhocSDKConfig
config.appKey = “ADHOC_xxx”
AdhocSDK.start(withConfigure: config, options: launchOptions)

并设置appKey为 AppAdhoc 后台的app_key值。“app_key” 是在登录 AppAdhoc 后,创建“应用”之后获得的授权标识。

可在AppAdhoc控制台应用列表找到, 如下图红线部分:

app_key

注:请不要延迟SDK的初始化,会导致无法监听到AppDelegate里的方法,无法加载Flags信息,可视化试验无法正常渲染。

请勿在SDK基础上进行自行封装,以免影响到试验逻辑,造成试验无法正常运行。

编程模式:根据“试验变量”展示相应内容

在编程模式中,“试验变量”的值决定了展示的内容或程序的逻辑。可视化试验可跳过此步骤。

注意:试验变量值应由PM或相关A/B Testing需求制定人员在后台提前录入完毕,如下图“版本管理”红线部分:

app_key

在调用SDK之前,记得引用头文件:

#import "AdhocSDK/AdhocSDK.h"

根据所获取的试验变量设置来执行不同版本的代码,在相应的测试页面添加代码

Objective-C  |  Swift

- (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;
    }
}
      
override func viewWillAppear(animated: Bool) {
      super.viewWillAppear(animated)
      //获取试验变量isNewHomePage的值
      let value: Int = AdhocSDK.getFlag("isNewHomePage", default: 0) as! Int;
          switch value {
          case 0:
              print("执行默认版本或原始版本逻辑")
          case 1:
              print("执行版本一逻辑")
          case 2:
              print("执行版本二逻辑")
          default:
              print("执行默认版本或原始版本逻辑")
          }
}

其中,'isNewHomePage' 即是“试验变量“,应与上图中红线标识保持一致。

请注意在用户访问到试验页面时,需要触发所有变量才算作进入试验,否则将不会上报试验数据。在此示例中,“AdhocSDK getFlag:@"isNewHomePage" default:@(0)”算作触发变量“isNewHomePage”。

编程模式:上报指标

指标用于量化试验结果的好坏,AppAdhoc 后台中的试验图表根据此数据生成。

优化指标

比如在进入某一逻辑分支后,可以统计点击次数。将上图中的指标“clickTimes”传入函数track实现上报指标, 每次累加1:

Objective-C  |  Swift
- (IBAction)btnClicked:(id)sender {
    [AdhocSDK track:@"clickTimes" value:@(1)];
}
func btnClicked(btn: UIButton) {
    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的集成是否成功(并不是真正开始试验!)。

Objective-C  |  Swift

在SDK启动时设置是否显示调试按钮

AdhocSDKConfig *config = [AdhocSDKConfig defaultConfig];
#ifdef DEBUG
    config.enableDebugAssist = YES;
#else
    config.enableDebugAssist = NO;
#endif
[AdhocSDK startWithConfigure:config options:launchOptions];

在工程任意地方添加如下代码:

var config:AdhocSDKConfig = AdhocSDKConfig.defaultConfig() as! AdhocSDKConfig
#if DEBUG
    config.enableDebugAssist = true
#else
    config.enableDebugAssist = false
#endif
AdhocSDK.start(withConfigure: config, options: launchOptions)

在Debug模式下启动APP,会出现下图中的悬浮图标:详细使用请参考iOS集成调试

在debug模式下启动APP的悬浮图标

点击上面的悬浮图标,扫描后台系统“集成调试”中的二维码,进入相应试验:

app_key

开始试验

恭喜,您完成了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 参考

iOS SDK API 参考

results matching ""

    No results matching ""