iOS/macOS SDK 集成(A/B Testing)

您所在的位置:网站首页 理想的游戏材料是激活幼儿思维敏捷性和发散型的触发器 iOS/macOS SDK 集成(A/B Testing)

iOS/macOS SDK 集成(A/B Testing)

2023-04-07 09:51| 来源: 网络整理| 查看: 265

A/B Testing SDK 依赖于神策分析 SDK 4.2.0 及以上版本,在使用前请确保已经成功集成神策分析 SDK,并进行了 SDK 初始化,详情可参考 SDK 集成 (iOS)、SDK 集成(macOS)

SDK 集成 CocoaPods 方式 源码方式 在 Podfile 文件中添加 pod  'SensorsABTesting'打开终端,切换到项目目录执行 pod install 或 pod update

注:如果执行 pod update 无法检测到最新版本,可以先执行 pod cache clean SensorsABTesting 清除本地缓存。

从  GitHub 获取 SDK 的源代码将源代码中 SensorsABTest 目录导入 App 项目,并选中 Copy items if needed

初始化  SDK

在神策分析中创建 A/B Testing 后,会生成分流试验请求 URL,通过该 URL 初始化 A/B Testing SDK:

#import // 必须先初始化神策分析 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 获取试验变量

初始化 SDK 之后,通过 API 获取具体试验的变量值,根据获取试验变量值的方式,可分为下面三种策略:

fetchCacheABTest:读取本地缓存,缓存不存在时使用默认值asyncFetchABTes:忽略本地缓存,从服务端获取数据fastFetchABTest:优先读取本地缓存,缓存不存在时从服务端获取数据

asyncFetchABTest 和 fastFetchABTest 接口会在主线程回调试验变量值

fetchCacheABTest 接口会在当前线程返回试试验变量值

请确保对A/B分流返回的 result 结果 & 接口中使用的默认值,都做了正常的业务逻辑处理!

以 fastFetchABTest 为例,可在相应的业务逻辑中添加如下代码:

#import // Integer 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值) [[SensorsABTest sharedInstance] fastFetchABTestWithParamName:@"具体的试验参数" defaultValue:@(0) completionHandler:^(id _Nullable result) { if ([result isKindOfClass:NSNumber.class]) { NSNumber *number = (NSNumber *)result; NSInteger integerResult = [number integerValue]; // TODO 请根据 integerResult 进行自己的试验 } }]; APPLESCRIPT 携带自定义属性获取试验变量

v0.1.5 及以上版本 SDK 支持自定义属性扩充受众筛选能力,可以在初始化 SDK 后,通过 API 添加自定义属性获取具体试验的变量值,根据获取试验变量值的方式,可分为下面 2 种策略:

asyncFetchABTest:忽略本地缓存,从服务端获取数据fastFetchABTest:优先读取本地缓存,缓存不存在时从服务端获取数据

asyncFetchABTest 和 fastFetchABTest 接口会在主线程回调试验变量值

以 fastFetchABTest 为例,可在相应的业务逻辑中添加如下代码:

#import // Integer 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值) SensorsABTestExperiment *experiment = [SensorsABTestExperiment experimentWithParamName:@"具体的试验参数" defaultValue:@(0)]; NSMutableDictionary *properties = [NSMutableDictionary dictionary]; properties[@"自定义属性对应英文名"] = @"自定义属性对应 value"; // 自定义属性 experiment.properties = properties; [[SensorsABTest sharedInstance] fastFetchABTestWithExperiment:experiment completionHandler:^(id _Nullable result) { if ([result isKindOfClass:NSNumber.class]) { NSNumber *number = (NSNumber *)result; NSInteger integerResult = [number integerValue]; // TODO 请根据 integerResult 进行自己的试验 } }]; APPLESCRIPT

自定义属性值支持字符串、字符串数组、数值、布尔和日期时间格式,并且属性名支持英文、数字、下划线,且不能以数字开头。

调试试验 iOS macOS

在 AppDelegate 的 - application:openURL:options: 方法中调用 -handleOpenURL: 对神策 A/B Testing Scheme 进行处理:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {           if ([[SensorsABTest sharedInstance] handleOpenURL:url]) {         return YES;     }     return NO; } CODE

在 AppDelegate 的 - application: openURLs: 方法中调用 -handleOpenURL: 对神策 A/B Testing Scheme 进行处理:

- (void)application:(NSApplication *)application openURLs:(NSArray *)urls { for (NSURL *url in urls) { if ([SensorsABTest.sharedInstance handleOpenURL:url]) { return; } } } CODE

可先将设备录入到调试设备管理列表中,在创建试验时,直接将指定调试设备录入到对应试验分组。

录入前请确保 App 已正确配置 Scheme调试设备在调试状态和正式上线阶段都会生效由于 Mac 设备不方便直接扫码,建议通过扫码工具获取二维码对应链接,然后在  safari 打开链接。然后点击落地页 H5 按钮,即可跳转打开 App,自动上传 distinctId 作为白名单。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3