A/B Testing SDK 依賴於神策分析 SDK v2.1.14 及以上版本,在使用前請確保已經成功整合神策分析 SDK,並進行了 SDK 初始化,詳情可參考 SDK 整合 (iOS )

1. SDK 整合

CocoaPods 方式,專案 Podfile 中增加以下配置:

pod 'SensorsABTesting'
RUBY

Podfile 目錄下執行 pod install 安裝 SDK。

2. 初始化  SDK

在神策分析中建立 A/B Testing 後,會產生分流測試請求 URL,透過該 URL 初始化 A/B Testing SDK:

#import <SensorsABTest.h>

// 必須先初始化神策分析 SDK(參考文件 https://manual.sensorsdata.cn/sa/latest/tech_sdk_client_ios_use-16285756.html)
// A/B Testing SDK 初始化
SensorsABTestConfigOptions *abtestConfigOptions = [[SensorsABTestConfigOptions alloc] initWithURL:@"分流測試請求網址"];
[SensorsABTest startWithConfigOptions:abtestConfigOptions];
APPLESCRIPT

3. 取得測試變量

初始化 SDK 之後,透過 API 取得具體測試的變量值,根據取得測試變量值的方式,可分為下面三種策略:

  • fetchCacheABTestWithExperimentId :讀取本地快取,快取不存在時使用預設值(對照組)
  • asyncFetchABTestWithExperimentId 忽略本地快取,從伺服器端取得數據
  • fastFetchABTestWithExperimentId 優先讀取本地快取,快取不存在時從伺服器端取得數據

以 fastFetchABTestWithExperimentId 為例,可在相應的業務邏輯中增加如下程式碼:

#import <SensorsABTest.h>

[[SensorsABTest sharedInstance] fastFetchABTestWithExperimentId:@"具體的測試 ID" defaultValue:@(0) completionHandler:^(id  _Nullable result) {
    if ([result isKindOfClass:NSNumber.class]) {
  NSNumber *number = (NSNumber *)result;
  if (strcmp([number objCType], "c") != 0) {
              NSInteger integerResult = [number integerValue];
            // TODO 請根據 integerResult 進行自己的測試
      } 
    }
}];
APPLESCRIPT

目前 A/B Testing 測試變量僅支援 Integer 型別,其他型別測試變量在持續開發中

4. 除錯測試

 AppDelegate  - application:openURL:options: 方法中呼叫 -handleOpenURL: 對神策 A/B Testing Scheme 進行處理:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
     
    if ([[SensorsABTest sharedInstance] handleOpenURL:url]) {
        return YES;
    }
    return NO;
}
APPLESCRIPT

如果需要將當前裝置指定為某測試組,可透過掃描 QR code 將當前裝置錄入該測試組白名單:


  • 錄入前請確保 App 已正確設定 Scheme

  • 測試組白名單僅在測試除錯狀態下有效,測試發佈後不受白名單影響