1.2.1.10 A/B实验接入介绍
优质
小牛编辑
127浏览
2023-12-01
1.1. 各个端接入sdk后以及开启A/B实验功能说明
1.1.1. iOS
引入v2.1.11以及以上版本后,开启A/B实验功能
(void)setABTestEnabled:(BOOL)ABEnabled;
具体说明点击查看详情
1.1.2. Android
引入v2.1.7以及以上版本,开启权限
<!-- Ab编程试验需要的权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
重点:具体使用说明点击查看详情
1.1.3. web
引入 v1.6.8以及以上版本后,开启A/B实验功能
DATracker.init('xxxxx', {
abtest: {
enable_abtest: true,
// 实时拉取实验配置
interval_mins_abtest: 0
}
});
具体使用说明点击查看详情
1.1.4. JAVA 服务端
引入v1.1-SNAPSHOT以及以上版本后,开启A/B实验功能
// 打开A/B实验功能
DATracker daTracker=DATracker.init("MA-6RWE-QWHKHEKDF12",true);
具体使用说明点击查看详情
1.1.5. 微信小程序
引入小程序sdk v1.1以及以上版本后,引入A/B实验sdk。
A/B实验模块获取(DATracker_ABtest)请联系开发者
//app.js
import DATracker from './utils/DATracker';
import ABtest from './utils/DATracker_ABtest';
DATracker.init('88888', {
appVersion: 'v1.0.1'
});
// 将ABtest实例注册到 DATracker 中,方便后面使用
DATracker['abtest'] = new ABtest(DATracker);
具体使用说明点击查看详情
1.2. 接入一个编程实验
下面讲解接入web应用编程实验流程为例
1.2.1. A/B实验平台中创建web应用编程实验
登录demo后
进入A/B实验平台操作流程:
- 点击创建实验按钮;
- 进入新建实验界面;
- 设置一个实验名称
开发文档内的web编程实验例子
; - 类型设置为
编程实验
; - 选择一个web应用;
- 点击新增分层,创建一个分层后,选择该分层;
- 点击下一步;
- 点击新增变量(这里名称设置为 bgColor)并创建后,选择该变量;该变量在sdk里使用,目的是改变背景颜色;
- 按照提示新建实验版本;设置的变量值将在网页中调用sdk的API获取到;
- 设置优化指标,选择
提交订单
; - 点击确定完成实验创建;
- 进入运行控制,调整流量,点击开始实验
点击查看该实验配置点击查看该实验流量分配
截图:
页面里引入sdk,开启A/B实验
引入sdk方式请点击获取和引入 HubbleData SDK
// sdk 初始化
<script type="text/javascript">
//初始化
//注意: 在Hubble平台创建一个类型为`Web`应用,复制对应的appkey,替换下面的 `MA-883D-4FFC199551FF`
DATracker.init('MA-883D-4FFC199551FF', {truncateLength: 255,persistence: "localStorage",cross_subdomain_cookie: false,
abtest: {
// 开启实验功能
enable_abtest: true,
// 实时拉取实验配置
interval_mins_abtest: 0
}});
</script>
// 清除本地数据,实际使用不要用 localStorage.setItem('mp_MA-883D-4FFC199551FF_hubble',''); (function(document,datracker,root){var help={};help.cookie={get:function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" "){c=c.substring(1,c.length)}if(c.indexOf(nameEQ)===0){return decodeURIComponent(c.substring(nameEQ.length,c.length))}}return null},parse:function(name){var cookie;try{cookie=_.JSONDecode(_.cookie.get(name))||{}}catch(err){}return cookie},set:function(name,value,days,cross_subdomain,is_secure){var cdomain="",expires="",secure="";if(cross_subdomain){var matches=document.location.hostname.match(/[a-z0-9][a-z0-9\-]+\.[a-z\.]{2,6}$/i),domain=matches?matches[0]:"";cdomain=((domain)?"; domain=."+domain:"")}if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires="; expires="+date.toGMTString()}if(is_secure){secure="; secure"}var new_cookie_val=name+"="+encodeURIComponent(value)+expires+"; path=/"+cdomain+secure;document.cookie=new_cookie_val;return new_cookie_val},remove:function(name,cross_subdomain){_.cookie.set(name,"",-1,cross_subdomain)}};root.getHubbleJSSDKVersions=function(version){help.cookie.set("mp_versions_hubble_jsSDK",version,false,true);loadJsSDK()};function removeElement(_element){var _parentElement=_element.parentNode;if(_parentElement){_parentElement.removeChild(_element)}}function addScriptTag(src){var loaded;var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");var localVersion=help.cookie.get("mp_versions_hubble_jsSDK");script.setAttribute("type","text/javascript");script.src=src;script.onload=script.onreadystatechange=function(){if(!loaded&&(!script.readyState||/loaded|complete/.test(script.readyState))){script.onload=script.onreadystatechange=null;loaded=true;removeElement(script)}};head.appendChild(script)}function addScriptTagTwo(url,fn){var isFirst=true;var iframe;try{iframe=document.createElement("iframe");iframe.style.display="none"}catch(e){iframe=document.createElement("iframe");iframe.setAttribute("src",url)}var loadfn=function(){if(isFirst){iframe.contentWindow.location="about:blank";isFirst=false}else{fn(iframe.contentWindow.name);iframe.contentWindow.document.write("");iframe.contentWindow.close();document.body.removeChild(iframe);iframe.src="";iframe=null}};iframe.src=url;if(iframe.attachEvent){iframe.attachEvent("onload",loadfn)}else{iframe.onload=loadfn}if(iframe){document.body.appendChild(iframe)}}function loadJsSDK(){var localVersion=help.cookie.get("mp_versions_hubble_jsSDK");var HUBBLE_LIB_URL="https://hubble.netease.com/track/w/DATracker.globals.js";var script,first_script;script=document.createElement("script");script.type="text/javascript";script.async=true;if(localVersion){HUBBLE_LIB_URL="https://hubble-js-bucket.nosdn.127.net/"+localVersion+".js"}script.src=HUBBLE_LIB_URL;first_script=document.getElementsByTagName("script")[0];first_script.parentNode.insertBefore(script,first_script)}if(!datracker["__SV"]){var win=window;try{var getHashParam,matches,state,loc=win.location,hash=loc.hash;getHashParam=function(hash,param){matches=hash.match(new RegExp(param+"=([^&]*)"));return matches?matches[1]:null};if(hash&&getHashParam(hash,"state")){state=JSON.parse(decodeURIComponent(getHashParam(hash,"state")));if(state["action"]==="mpeditor"){win.sessionStorage.setItem("_mpcehash",hash);history.replaceState(state["desiredHash"]||"",document.title,loc.pathname+loc.search)}}}catch(e){}var gen_fn,functions,i,lib_name="DATracker";window[lib_name]=datracker;datracker["_i"]=[];datracker["init"]=function(token,config,name){var target=datracker;if(typeof(name)!=="undefined"){target=datracker[name]=[]}else{name=lib_name}target["people"]=target["people"]||[];target["abtest"]=target["abtest"]||[];target["toString"]=function(no_stub){var str=lib_name;if(name!==lib_name){str+="."+name}if(!no_stub){str+=" (stub)"}return str};target["people"]["toString"]=function(){return target.toString(1)+".people (stub)"};function _set_and_defer(target,fn){var split=fn.split(".");if(split.length==2){target=target[split[0]];fn=split[1]}target[fn]=function(){target.push([fn].concat(Array.prototype.slice.call(arguments,0)))}}functions="track_heatmap register_attributes register_attributes_once clear_attributes unregister_attributes current_attributes single_pageview disable time_event get_appStatus track set_userId track_pageview track_links track_forms register register_once alias unregister identify login logout signup name_tag set_config reset people.set people.set_once people.set_realname people.set_country people.set_province people.set_city people.set_age people.set_gender people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.set_populationWithAccount people.set_location people.set_birthday people.set_region people.set_account abtest.get_variation abtest.async_get_variable".split(" ");for(i=0;i<functions.length;i++){_set_and_defer(target,functions[i])}datracker["_i"].push([token,config,name]) };datracker["__SV"]=1.6}if(!help.cookie.get("mp_versions_hubble_jsSDK")){addScriptTag("https://hubble.netease.com/track/w/version.js?random"+Math.random())}else{loadJsSDK()}})(document,window["DATracker"]||[],window); //初始化 //注意: 在Hubble平台创建一个类型为`Web`应用,复制对应的appkey,替换下面的 `MA-883D-4FFC199551FF` DATracker.init('MA-883D-4FFC199551FF', {truncateLength: 255,persistence: "localStorage",cross_subdomain_cookie: false, abtest: { enable_abtest: true, // 实时拉取实验配置 interval_mins_abtest: 0 }});1.2.2. web页面里参与编程实验实现
当前参与的实验变量:bgColor; 获取到的实验变量值:$$
// 参与编程实验实现 DATracker.abtest.get_variation(function(flgs) { // 调用 get 方法参与编程实验 ; // `bgColor` 是在创建编程实验预定义的变量; // '#fff' 是默认值(当获取变量值失败后使用); var bgColor = flgs.get('bgColor', '#fff'); // 设置上面提交按钮的背景颜色 document.getElementById('submit').style.backgroundColor = bgColor; // 其它 showTip(bgColor); });function showTip($val) { var $tip = document.getElementById('tip'); var innerHtml = $tip.innerHTML.replace('$$', $val); $tip.innerHTML = innerHtml; $tip.style.display = 'block'; } document.getElementById('run').onclick = function() { var $js = document.getElementById('js'); var runJs = $js.innerText; eval(runJs); }; // 上报优化指标事件 document.getElementById('submit').onclick = function() { DATracker.track('SubmitOrder'); };