引入神策 Flutter 插件

在 pubspec.yaml 中添加 A/B Testing Flutter 插件:

dependencies:

  abtesting_sdk_flutter: ^0.0.2
CODE

初始化 SDK

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

import 'package:abtesting_sdk_flutter/abtesting_sdk_flutter.dart';

// 注意需要在埋点 SDK 初始化后初始化 A/B Testing SDK
// A/B Testing SDK 初始化
SensorsABTest.startWithConfigOptions("分流试验请求地址");
CODE

Flutter 中获取试验变量

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

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

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

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

import 'package:abtesting_sdk_flutter/abtesting_sdk_flutter.dart';


// int 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值)
int? result = await SensorsABTest.fastFetchABTest("具体的 paramName", 0); 
	// TODO 根据 result 处理相应逻辑
switch (result) {
  case 0:
    break;
  case 1:
    // 试验组 1 的处理逻辑  
    break;
  case 2:
    // 试验组 2 的处理逻辑
    break;
  // ……
  // …… 
  default:
    // 其他情况的处理逻辑
}
CODE

注意

如果您的项目不支持 Null safety ,请使用如下方式获取实验结果:

 int result = await SensorsABTest.fastFetchABTest("具体的 paramName", 0);  
// TODO 根据 result 处理相应逻辑
CODE

调试试验

对于 iOS 需要在 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

如果需要将当前设备指定为某试验组,可通过扫描二维码将当前设备录入该试验组白名单: