Skip to content

A demo Android App to help Adhoc users to understand Adhoc Optimization services.

Notifications You must be signed in to change notification settings

AppAdhoc/AdhocSDK-Android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
dong yuangui
Apr 22, 2021
c9770b1 · Apr 22, 2021
Nov 1, 2019
Mar 7, 2017
Jan 25, 2018
Mar 29, 2017
Mar 1, 2021
Apr 22, 2021
Mar 29, 2017
Mar 29, 2017
Aug 18, 2017
Sep 13, 2017
Sep 20, 2017
Oct 12, 2017
Oct 25, 2017
Oct 25, 2017
Nov 3, 2017
Jan 25, 2018
Jan 25, 2018
Nov 22, 2016
Jun 29, 2018
Apr 22, 2021
Apr 19, 2016
Apr 14, 2015
Apr 19, 2016
Apr 19, 2016

Repository files navigation

Android SDK 集成文档

ChangeLog
Android SDK API 参考

集成SDK

通过在工程build.gradle配置脚本中添加maven线上依赖,导入最新版本SDK。 在Gradle依赖中添加:

dependencies {    
    // 支持可视化编辑和编程模式,support版本
    implementation 'com.appadhoc:abtest:5.4.4'
    // implementation 'com.appadhoc:abtestX:5.4.4' //支持可视化和编程版本,androidX版本
    implementation(name: 'msa_mdid_1.0.13', ext: 'aar')// 设备id包
     //   lite版仅支持编程模式,支持androidX和support
    //    implementation 'com.appadhoc:abtest-lite:5.4.4'
    // gif图可视化编辑(可选项)
  // implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.21'(需要支持gif图的用户需要添加该库)
}

如果无法正常集成请添加如下配置:

allprojects {  
    repositories {
            jcenter()     
    }
}

加入权限

在项目中找到项目配置文件 AndroidManifest.xml,加入网络访问权限和SDCARD读写权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//读取手机IMEI的权限,须在获得此权限后再初始化sdk,如果缺少此权限,会以AndroidID作为设备唯一标识符
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
//获取wifi状态权限
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>

//读取手机IMEI的权限,须在获得此权限后再初始化sdk,如果缺少此权限,会以AndroidID作为设备唯一标识符
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>

//读写sd卡的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

SDK初始化

创建Appllication 类,并在OnCreate()中加入下面代码:

AdhocTracker.init(this,AdhocConfig.defaultConfig()
              //this是Context对象
            //设置Appkey(必要参数)
            .appKey(key)
            //开启debug悬浮框
            .enableDebugAssist(true)
            //多进程数据安全设置选项
            //.supportMultiProcess()
            //开启实时上报
            //.reportImmediately()
        );

需要在AndroidManifest.xml 里指定类名:

SDK初始化

如果已经创建过Application类,跳过新建步骤,直接在onCreate加入上述代码即可。

其中,“appKey” 是在登录 AppAdhoc 后,创建“应用”之后获得的授权标识。

注意:试验“应用”此时应该提前创建完毕。可在AppAdhoc控制台应用列表找到,如下图红线部分:

your_app_key

请勿在SDK基础上进行自行封装,以免影响到试验逻辑,造成试验无法正常运行。如果确有自行封装的需求,请与客户经理联系,获取注意事项。

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

试验变量的值决定了展示的内容或程序的逻辑。试验变量在编程模式试验中创建,可视化试验无需此步骤。

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

your_app_key

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

import com.adhoc.adhocsdk.AdhocTracker;

获取变量的值,请在使用到该变量处添加以下代码:

//获取Boolean类型的试验变量isNewHomePage的值,第二个参数为设定默认值,在网络异常时将按照该默认值执行
if (AdhocTracker.getFlag("isNewHomePage", false)) {
    //跳转至新首页
} else {
    //跳转至新旧首页
}

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

请注意在用户访问到试验页面时,需要调用过所有变量才算作进入试验,否则将不会统计试验数据。

上报指标

指标用于量化试验结果的好坏,AppAdhoc 后台中的试验图表根据此数据生成。 在可视化试验中,您也可以通过此方法定义上报指标。

注意:指标值应由PM或相关AB Test需求制定人员在后台提前录入完毕,如下图“优化指标”红线部分:

优化指标

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

AdhocTracker.track("clickTimes", 1);

混淆相关

在proguard-rules.txt文件中加入:

-dontwarn com.bun.miitmdid.**
-keep class com.bun.miitmdid.** {*;}
-keep class com.adhoc.** {*;}
-keep class android.support.v4.view.ViewPager{*;}
-keep class android.support.v4.view.ViewPager$*{*;}
-keep class android.support.v7.widget.RecyclerView{*;}
-keep class android.support.v7.widget.RecyclerView$*{*;}
-keep class * extends android.support.v7.widget.RecyclerView$Adapter

开始试验

恭喜,您完成了AppAdhoc AB Testing Web SDK的埋点集成工作,请通知PM或相关AB Test需求制定人员,点下开始试验按钮吧!

注意:确保app_key, 试验变量字符串,指标字符串与后台截图处一一对应,否则可能出现异常或无试验数据情况。

高级功能 自定义受众定向(需要联系管理员开启)

AppAdhoc Web SDK 会自动把浏览器名称、版本、语言等用户标签自动上传,开发者也可以根据需要给当前用户打上合适的自定义标签,进而实现将不符合条件的用户排除在此次试验之外。比如只想要女性用户,或30岁以下的用户参与试验等。

注意:自定义受众定向条件应由PM或相关AB Test需求制定人员在后台提前录入完毕,如下图“受众定向”红线部分。

在运行控制/右侧定向试验:

受众定向

选择分组,点击编辑用户群:

受众定向

即得到受众条件的key,在下图例子中,“sex”是key:

受众定向

在AdhocTracker.init()方法中进行设置:


 //this是application对象,设置App上下文(必要参数)
AdhocTracker.init(this, AdhocConfig.defaultConfig()
                // 设置Appkey(必要参数)
                .appKey(APP_KEY)
                .enableDebugAssist(false)
                // 添加自定义用户标
                .addCustomAttribute("key", "value")
                // 多进程App设置项
                .supportMultiProcess());

API 参考

android SDK API 参考