Android SDK

使用QuickTracking Android(A/B Testing)必备操作。

1.集成代码明细

A/B Testing SDK 依赖Android SDKv1.6.4及以上版本,在使用前请确保已经成功集成QuickTracking 统计SDK,并进行了SDK初始化,详情可参考引入&配置SDK

2.编程实验

2.1集成与初始化SDK

首先您需要使用同步方式初始化QuickTracking 统计SDK。初始化QuickTracking 统计SDK 完成之后,再初始化QuickTracking A/B Testing SDK。在QuickTracking A/B Testing SDK 初始化时需要传入请求分流试验的地址,请联系运营人员获取。

2.1.1同步引入方式

在主 modulebuild.gradle 文件中添加 QT A/B Testing SDK 依赖:

线上包:

dependencies {
    implementation fileTree(include:['*.jar'], dir:'libs')

    //QuickTracking统计分析SDK 
    implementation 'com.lydaas.qtsdk:qt-px-common:1.6.4.PX'
    // QuickTracking A/B Test SDK
    implementation 'com.lydaas.qtsdk:qt-ab-test:1.0.0.PX'
  
}

本地包:

dependencies {
    implementation fileTree(include:['*.jar'], dir:'libs')
    //QuickTracking统计分析SDK 
    implementation files('libs/qt-px-common-1.6.4.PX.aar')
    // QuickTracking A/B Test SDK
    implementation files('libs/QTABTest-release.aar')

}

2.1.2 SDK初始化

SDK初始化依赖ApplicationContext,请在合适的时候传入对应的参数:

import com.quicktracking.sdk.android.abtest.QTABTest;
import com.quicktracking.sdk.android.abtest.QTABTestConfigOptions;

try {
    // QT A/B Testing SDK 初始化
   QTABTestConfigOptions config = new QTABTestConfigOptions("实验地址");
    
    // 初始化需要传入Context
   QTABTest.startWithConfigOptions(this.getApplicationContext(), config);
} catch (Exception e) {
    e.printStackTrace();
}

配置方法:

public QTABTestConfigOptions(String url,int timeInterval)
public QTABTestConfigOptions(String url)

参数

类型

默认值

含义

备注

url

string

undefined

实验地址

必传参数,需设置非空字符串。

timeInterval

int

10 * 60 *1000

缓存更新时常(毫秒)

最大值: 30 * 60 * 1000

最小值: 10 * 1000

可选

2.2获取实验变量

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

  • fetchABTestFromCache读取本地缓存,缓存不存在时使用默认值

  • fetchABTestFromServer :忽略本地缓存,从服务端获取数据

  • fetchABTestFromCacheThenServer :优先读取本地缓存,缓存不存在时从服务端获取数据

2.2.1使用场景说明

API名称

场景说明

fetchABTestFromCache

如果对查询性能有要求,可以使用fetchABTestFromCache API 只从本地缓存获取变量值,缺点是无法及时命中最新的实验结果

fetchABTestFromServer

如果您进行时间片轮转实验,且对实验的时效性有要求,可以使用fetchABTestFromServer API 获取实验变量值,缺点是可能会存在一定的网络延迟

fetchABTestFromCacheThenServer

默认情况下,建议使用此API,兼顾查询性能和时效性考虑,该API会优先从本地缓存获取变量值,如果本地缓存不命中结果,则查询AB实验服务端最新数据

2.3API 介绍

fetchABTestFromCache

/**
* 从缓存中获取试验结果
*
* @param paramName 参数名
* @param defaultValue 默认值
* @param <T> 返回值类型
* @return the t
*/
<T> T fetchABTestFromCache(String paramName, T defaultValue);
请求参数

参数

类型

默认值

含义

备注

param_name

string

undefined

实验参数名

必传参数,需设置非空字符串。

default_value

String | Boolean | Integer | JSONObject

undefined

实验参数默认结果值

必传参数,需和当前实验值结果类型保持一致。

如参数对应的实验值类型为NUMBER类型,则传入的default_value也必须是number类型,同时返回的result实验结果也是number类型

重要

注意:请确保对A/B分流接口中使用的默认值,都做了正常的业务逻辑处理!

返回结果

参数

类型

默认值

含义

备注

<T> T

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

使用示例
import com.quicktracking.sdk.android.abtest.QTABTest;

// 请求返回String参数 
String result = QTABTest.shareInstance().fetchABTestFromCache("param_string", "test");

// 请求返回Boolean参数 
Boolean result = QTABTest.shareInstance().fetchABTestFromCache(getTextValue(), false);

// 请求返回Number参数 
Integer result = QTABTest.shareInstance().fetchABTestFromCache(getTextValue(), 1);

//请求返回JSONObject参数
try{
  JSONObject result = QTABTest.shareInstance().fetchABTestFromCache(getTextValue(), null);
}catch (Exception e){
}

fetchABTestFromServer

/**
 * 从网络请求试验结果
 *
 * @param <T>            默认值类型
 * @param paramName      参数名
 * @param timeoutMillSeconds 超时时间(毫秒)
 * @param defaultValue   默认值
 * @param callback       回调接口
 */
<T> void fetchABTestFromServer(String paramName, int timeoutSeconds, T defaultValue, OnABTestResultCallBack<T> callback);
请求参数

参数

类型

默认值

含义

备注

paramName

string

undefined

实验参数名

必传参数,需设置非空字符串。

timeoutSeconds

int

3000

分流实验服务端请求超时时间

非必传参数

defaultValue

String | Boolean | Integer | JSONObject

undefined

实验参数默认结果值

必传参数,需和当前实验值结果类型保持一致。

如参数对应的实验值类型为NUMBER类型,则传入的default_value也必须是number类型,同时返回的result实验结果也是number类型

<T> T

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

callback

Function

分流实验结果值回调函数

必传参数

Callback说明:

import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;

public interface OnABTestResultCallBack<T> {
    /**
     * 请求回调
     *
     * @param result <T> 默认值类型
     */
    void onResult(T result);
}

返回参数:

参数

类型

默认值

含义

备注

<T> T

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

重要

注意:请确保对A/B分流接口中使用的默认值,都做了正常的业务逻辑处理!

返回结果

参数

类型

默认值

含义

备注

result

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

使用示例
import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;
import com.quicktracking.sdk.android.abtest.QTABTest;

QTABTest.shareInstance().fetchABTestFromServer("", 10 * 1000, null, new OnABTestResultCallBack<JSONObject>() {
    @Override
    public void onResult(JSONObject result) {
        refreshLogView(result.toString());
    }
});

fetchABTestFromCacheThenServer

 /**
     * 如果本地有缓存,则返回缓存数据;否则从网络请求最新的试验数据,可自定义超时时间
     *
     * @param <T>          默认值类型
     * @param paramName    参数名
     * @param timeout      超时时间
     * @param defaultValue 默认值
     * @param callback     回调接口
     */
    <T> void fetchABTestFromCacheThenServer(String paramName, int timeout, T defaultValue, OnABTestResultCallBack<T> callback);
请求参数

参数

类型

默认值

含义

备注

paramName

string

undefined

实验参数名

必传参数,需设置非空字符串。

timeoutSeconds

int

3000

分流实验服务端请求超时时间

非必传参数

defaultValue

String | Boolean | Integer | JSONObject

undefined

实验参数默认结果值

必传参数,需和当前实验值结果类型保持一致。

如参数对应的实验值类型为NUMBER类型,则传入的default_value也必须是number类型,同时返回的result实验结果也是number类型

<T> T

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

callback

Function

分流实验结果值回调函数

必传参数

Callback说明:

import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;

public interface OnABTestResultCallBack<T> {
    /**
     * 请求回调
     *
     * @param result <T> 默认值类型
     */
    void onResult(T result);
}

返回参数:

参数

类型

默认值

含义

备注

<T> T

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

重要

注意:请确保对A/B分流接口中使用的默认值,都做了正常的业务逻辑处理!

返回结果

参数

类型

默认值

含义

备注

result

String | Boolean | Integer | JSONObject

undefined

实验参数结果值

设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断

使用示例
import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;
import com.quicktracking.sdk.android.abtest.QTABTest;

QTABTest.shareInstance().fetchABTestFromCacheThenServer("param_json", 10 * 1000, null, new OnABTestResultCallBack<JSONObject>() {
    @Override
    public void onResult(JSONObject result) {
    }
});

3.调试实验

开启实验后

image

开启log时会打印出您对应的实验列表

image