天天看點

【ABTest】一款簡單易用的ABTest開源庫ABTest

Github : https://github.com/TJHello/ABTest

Gitee: https://gitee.com/TJHello/ABTest

ABTest

一款簡單易用的ABTest開源庫

原理:通過給事件标簽,添加A,B字尾來統計ABTest結果。

1、相容友盟、Firebase,可同時打點。

2、支援線上配置ABTest。

3、支援統計留存。

4、支援統計使用時長。

使用步驟

Step1 接入自動內建插件到build.gradle(project)

buildscript {
     repositories {
        ...
         maven { url 'https://raw.githubusercontent.com/TJHello/publicLib/master'}
     }
}

allprojects {
     repositories {
        ...
        maven { url 'https://raw.githubusercontent.com/TJHello/publicLib/master'}
     }
}

           

Step2 配置build.gradle(app)

dependencies {
    //需要另外接入友盟或者Firebase打點
    implementation 'com.TJHello:ABTest:1.0.17'
}
           

Step3 配置Application

override fun onCreate() {
    super.onCreate()
    val isNew = true//自己判斷目前使用者是否是新使用者,如果一開始就接入了ABTest,可以寫成true。
    ABTest.isDebug = true
    //本地測試
    ABTest.init(this, true)
        .addTest(ABConfig().apply {//添加一項ABTest
            this.name = "ABTestDemo"//測試名稱
            this.ver = 0//AB測試版本,預設0,如果同一個測試不同版本,則修改這個數值
            this.abVer = 10001//目前測試對應的應用版本号
            this.data = mutableListOf("1","2")//支援任意多元度的資料
            this.listenEvent = mutableListOf("ABTestDemoEvent")//需要納入AB的事件,留白則監聽所有事件
            this.mergeEvent = false//合并事件(測試中)
            this.mergeTag = true//合并标簽eg:data_A=value1,data_B=value2  ->  data = value1_A,data = value2_B
            this.onlyNew = true//僅将新增使用者納入測試結果
        })
    //通過Firebase-RemoteConfig線上配置ABTest(需要另外接入該庫)
    ABTest.init(this, true)
    RemoteConfig.init(){
        if(it){
            ABTest.addTestByRemoteConfig()
        }    
    }
    //通過自己的伺服器線上配置ABTest
    ABTest.init(this, true)
    ABTest.addTestByJsonConfig(xx)
    ABTest.addTestByInfoConfig()
}

           

Step4 替換友盟打點

其餘友盟初始方法不變,替換友盟onEvent方法

//MobclickAgent.onEvent(context, eventId, map)

ABTest.getInstance().event(eventId,map)

           

日志檢視 tag : ABTestLog

打點效果

未接入ABTest前->

data
1
2
3

接入ABTest後->

data data_Test_A data_Test_B data_Test_C data_Test_D
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3