Android SDK API

anwei发表于:2019年12月05日 12:58:28更新于:2019年12月05日 13:18:24

1.Gradle配置API


应用在编译时的自定义配置API。

SDK支持限制:只支持Android 无埋点 SDK

注意,imeiEnable、androidEnable、googleAdIdEnable 配置项不支持 com.android.tools.build:gradle 3.0.x 以下版本。

API

默认值

说明

无埋点SDK版本支持

埋点SDK版本支持

imeiEnable

true

为了海外应用市场上架应用,设置为 false 则 SDK 不采集 imei 。在编译期配置将删除该部分的采集代码,后续配置(初始化或者运行时)将失效。

>=2.7.8

-

androidIdEnable

true

为了海外应用市场上架应用,设置为 false 则 SDK 不采集 androidId 。在编译期配置将删除该部分的采集代码,后续配置(初始化或者运行时)将失效。

>=2.7.8

-

googleAdIdEnable

true

为了海外应用市场上架应用,设置为 false 则 SDK 不采集 GoogleAdId 。在编译期配置将删除该部分的采集代码,后续配置(初始化或者运行时)将失效。

>=2.7.8

-

oaidEnable

ture

国内移动安全联盟MSA 联合各大手机制造商推出了 OAID , 作为唯一广告标识符。

设置为 false 则运行时和初始化的配置则无效。

>=2.8.5

-

示例代码


android {    ···}
// 须位于 android 代码块下
growingio {    
    defaultConfig {        
         imeiEnable true        
         androidIdEnable true        
         googleAdIdEnable true    
    }    
    buildTypes {        
         googlePlay {            
              imeiEnable false            
              andoridIdEnable false            
              googleAdIdEnable true       
               }    
    }
}


2.初始化配置项API


初始化 SDK 时配置项 API ,可以控制 SDK 的采集上报流程,另外还可接收来自 GIO 的 callback。

初始化配置项均在ApplicationonCreate方法中 SDK 初始化代码块中设置,下面将分类并描述含义。

示例代码


import android.app.Application;

import com.growingio.android.sdk.collection.Configuration;
import com.growingio.android.sdk.collection.GrowingIO;
import com.growingio.android.sdk.deeplink.DeeplinkCallback;
import java.util.Map;

public class TestApplication extends Application {   
    @Override   
    public void onCreate() {        
       super.onCreate();        
       GrowingIO.startWithConfiguration(this, new Configuration()                
               .disableCellularImp()                
               .disableImageViewCollection(false)                      
               .setBulkSize(100)                
               .setCellularDataLimit(1000)                           
               .setChannel("渠道名")                
               .setDebugMode(true)               
               .setDeeplinkCallback(new DeeplinkCallback() {                   
                    @Override                    
                    public void onReceive(Map<String, String> params, int error, long appAwakePassedTime) {                    
                    }               
                }).setDiagnose(false)                
                .setDisabled(false)                
                .setDisableImpression(false)                          
                .setFlushInterval(1000)                          
                .setMutiprocess(true)                
                .setSampling(0.34)                
                .setSessionInterval(23000)                            
                .setTestMode(true)                
                .setThrottle(false)                
                .setTrackWebView(true)                
                .supportMultiProcessCircle(true)                      
                .trackAllFragments()                
                .setImeiEnable(true)                
                .setGoogleAdIdEnable(true)                            
                .setAndroidIdEnable(true)                              
                .setOAIDEnable(true));    
      }
}

基础配置API

API

默认值                      

说明

无埋点SDK版本支持

埋点SDK版本支持

setDebugMode

false

在Logcat中输出采集日志

ALL

ALL

setTestMode

false

实时发送数据,开启则不遵循移动网络状态下数据发送大小默认 3M 限制以及采集数据缓存30秒发送策略。

为了方便开发者查看日志,一般和setDebugMode一起使用。

ALL

ALL

setChannel

设置App下载渠道

ALL

ALL

useID

true

是否在计算xpath时使用控件id,默认使用

<2.6.0

-

SDK功能API

API

默认值                  

说明

无埋点SDK版本支持

埋点SDK版本支持

setDeeplinkCallback

DeepLink 回调接口,获得自定义参数以便跳转对应 APP页 面

>=2.3.2

ALL

setTrackWebView

true

是否采集全部的WebView,设置为false时不采所有WebView数据

ALL

-

supportMultiProcessCircle

false

是否使用多进程圈选功能

ALL

-

setMutiprocess

false

使用了多进程必须配置,自定义事件和变量值才会多进程共享

ALL

ALL

trackAllFragments

false

是否采集所有Fragment

ALL

-

setHashTagEnable

false

WebView中的页面访问,是否认为点击锚点链接是一个页面浏览

ALL

-

数据采集发送API

API

默认值

说明

无埋点SDK版本支持

埋点SDK版本支持

setDisabled

false

SDK 是否采集数据,设置为true时不采集数据

ALL

ALL

setSampling

1

采样率[0.01~1],若设置sampling = 0.01,则 1% 的设备会被采集数据,每次启动会根据用户设置的采样率判断设备是否在采集的范围之内,使用之前请咨询技术支持

ALL

ALL

setSessionInterval

30 * 1000

在后台停留时长超过此值,则产生新的sessionId,发送visit事件。

ALL

ALL

setFlushInterval

30 * 1000

数据刷新的最长时间间隔,默认30 秒 。如果距离上次发送数据事件超过此时间则发送事件

ALL

ALL

setThrottle

false

是否节流发送,节流发送时imp不发送,不发送但是采集,imp为元素展示事件

ALL

-

setDisableImpression

false

是否采集imp事件,imp为元素展示事件,默认采集imp

ALL

-

disableCellularImp

false

否关闭移动蜂窝网imp事件采集,imp为元素展示事件

ALL

-

setCellularDataLimit

3* 1024 *1024

一天的时间之内,在移动蜂窝网下的数据最大传输量,默认3M。

ALL

ALL

setBulkSize

300

如果数据库存储数据条数大于等于bulkSize,则马上发送数据。

ALL

ALL

setImeiEnable

true

设置为 false 则 SDK 不采集 imei,适用于海外应用市场上架的应用。

>=2.7.8

-

setAndroidIdEnable

true

设置为 false 则 SDK 不采集 androidid ,适用于海外应用市场上架的应用。

>=2.7.8

-

setGoogleAdIdEnable

true

设置为 false 则 SDK 不采集 GoogleAdId ,适用于海外应用市场上架的应用。

>=2.7.8

-

setOAIDEnable

true

国内移动安全联盟MSA 联合各大手机制造商推出了 OAID , 作为唯一广告标识符。

>=2.8.5

-


3.运行时API


运行时 API 可对 SDK 进行采集上报数据的控制。

GrowingIO为App提供运行时随意调用的API,使用方法如下:


// 得到 GrowingIO 实例后可以调用其中 API
GrowingIO gio = GrowingIO.getInstance();
gio.setUserId("张溪梦");


GrowingIO所有API都需要在主线程调用。


基础配置API

API

说明

无埋点SDK版本支持

埋点SDK版本支持

setGeoLocation

设置经纬度,并在 vst 事件中发送,Android SDK 暂时没办法自动获取GPS数据,如果您要采集GPS数据,需要在您的App每次获取完GPS数据之后,通过该API告知 SDK。如果您不设置,我们默认使用用户IPLocation。

ALL

ALL

clearGeoLocation

清空经纬度

ALL

ALL

setViewInfo

配置 view 的 Tag,标记 View ,并在 GrowingIO 相关事件中发送 ,内容对应 xPath 中的 obj

例如:在商品ListView添加购物车的场景中,每个商品item都含有一个加入购物车按钮,这时无法区分商品item与将它加入购物车按钮的一对一关系,此时调用此方法增加描述。

注意:适用于原有v字段含义不大,只关注描述的场景,使用此接口后v字段将不采集

ALL

-

setViewContent

配置 view 的 Tag,标记 View ,并在 GrowingIO相关事件中发送,内容对应 xPath 中的 v

SDK默认不会采集ImageView的内容,为了能对不同的图片元素(ImageView)区分统计,需要对每个具有分析意义的图片元素(ImageView)添加描述。

ALL

-

setViewID

设置 View id ,配置之后对应 xPath 中的 view id,SDK将会使用Layout文件中的ID来识别一个元素。

如果部分元素在Layout文件中没有ID,建议在Layout文件中添加。

对于动态生成的元素,可以使用如下方法对它设置唯一的ID。

当您的应用界面改版时,可能会导致无法准确地统计已经圈选的元素。因此,对于应用中的主要流程涉及到的界面元素,建议您为它们设置固定的唯一ID,以保证数据的一致性。

  • ID 只能设置为字母、数字和下划线的组合

  • 如果在ViewGroup上设置ID的话,SDK会忽略他所有子元素的默认ID(就是写在xml文件里的)只会使用GrowingIO.setViewID设置的ID。

  • 对于已经集成过旧版SDK并圈选过的应用,对某个元素设置ID后再圈选它,指标数值会从零开始计算,类似初次集成SDK后发版的效果,但不影响之前圈选的其它指标数据。如果不希望出现这种情况,请不要使用这个方法

ALL

-

setChannel

  • <2.6.5 版本: 先设置渠道信息,再发送数据 能够保证所有数据都一定会带上渠道信息。

  • >=2.6.5 版本: 保留原有设置渠道信息的方法,新增在运行时设置渠道信息。新增的接口无法保证所有数据都一定会带上渠道信息(虽然我们会通过重发机制进行保证,但是无法做到100%)。

ALL

-

数据采集API

API

说明

无埋点SDK版本支持

埋点SDK版本支持

disableDataCollect

遵守欧洲联盟出台的通用数据保护条例,用户不授权,不采集用户数据

>=2.3.2

ALL

enableDataCollect

遵守欧洲联盟出台的通用数据保护条例,用户授权,采集用户数据

>=2.3.2

ALL

disable

GrowingIO停止采集

ALL

ALL

resume

GrowingIO恢复采集

ALL

ALL

stop

GrowingIO停止采集,可以不在主线程调用

ALL

ALL

setThrottle

是否节流发送(节流发送时imp不发送),内部实际调用 Configuration 中的同名方法,所以在初始化时候配置和运行时动态配置,效果一样。

ALL

-

setImp

imp事件开关,true 为打开

ALL

-

disableImpression

不发送imp

ALL

-

ignoredView

忽略配置的 View ,不采集用户数据。

如果您需要忽略某些特殊内容,比如倒计时元素或涉及隐私的内容,可以使用此接口。

ALL

-

ignoreFragment

不采集配置的 Fragment 页面浏览事件(page),不将Fragment视作一个页面,可以理解成当作为一个可点击的view。自动采集用户行为事件(clck、chng)和元素展示事件(imp)。

ALL

-

ignoreFragmentX

支持 AndroidX , 功能同 ignoreFragment。

>=2.6.6

-

ignoreViewImp

忽略配置的 View ,不采集用户元素浏览数据。

如果您需要忽略某些大量的 数据,比如弹幕,可以使用此接口。

>=2.6.7

-

setPageName

设置页面别名,有些时候,对于完成某个功能的页面,统计时可能需要进一步细分。 比如,对于展示商品列表的页面,需要区分衣物类商品,以及食品类商品的两种列表的访问量。


注意

  1. 必须在该ActivityonCreate方法中完成该属性的赋值操作。

  2. 页面别名只能设置为字母、数字和下划线的组合。

  3. 为查看数据方便,请尽量对iOS和安卓的同功能页面取不同的名称。

ALL

-

setPageNameX

支持 AndroidX , 功能同 setPageName。

>=2.6.6

-

getSessionId

得到 session id

ALL

ALL

getDeviceId

获取设备id,对应数据采集的u字段,又称为匿名用户id,用来定义一台设备,SDK 自动生成。

ALL

ALL

trackBanner

设置所有广告图对应的广告内容描述,内容描述需要跟广告的顺序相同。

ALL

-

trackEditText

SDK 默认不采集用户输入框的内容,设置以后,采集除了密码以外的输入框文本内容。

当这个输入框失去焦点(包括应用退到后台),且输入框内容跟获取焦点前相比发生变化时,输入框内文字会被发送回GrowingIO。

注意:对于密码输入框,即便标记为需要采集,SDK也会忽略,不采集它的数据。

ALL

-

trackFragment

如果APP初始化时候,没有设置 trackAllFragment 即不采集全部 Fragment,可以选择性采集指定 Fragment,设置之后 sdk 将监听 Fragment 的各个生命周期, 采集相关用户行为数据。

请在 new Fragment 的时候调用此方法。

ALL

-

trackFragmentX

支持 AndroidX , 功能同 trackFragment。

请在 new Fragment 的时候调用此方法。

>=2.6.6

-

trackWebView

采集 WebView 事件,默认采集,您可以在不全量采集WebView的时候,定制采集某个WebView

<2.6.0

-

trackX5WebView

采集 X5WebView 事件,默认采集

<2.6.0

-

setTabName

如果您有某些View动态添加到ViewTree中并且在父容器中的位置不固定(例如常见的多Fragment实现的Tab切换),请给每个View设置ID来辅助统计

ALL

-

setImeiEnable

设置为 false 则 SDK 不采集 imei,适用于海外应用市场上架的应用。

>=2.7.8

-

setAndroidIdEnable

设置为 false 则 SDK 不采集 androidId ,适用于海外应用市场上架的应用。

>=2.7.8

-

setGoogleAdIdEnable

设置为 false 则 SDK 不采集 GoogleAdId ,适用于海外应用市场上架的应用。

>=2.7.8

-

setOAIDEnable

国内移动安全联盟MSA 联合各大手机制造商推出了 OAID , 作为唯一广告标识符。Android 2.8.5 新增。

>=2.8.5

-


4.自定义数据上传API


自定义数据常用作打通业务逻辑

您的APP或网页在集成了 GrowingIO 的 SDK 之后,它将会自动地为您采集一系列用户行为数据,进行数据分析。除自动收集的用户行为数据(或称为无埋点数据)之外,GrowingIO 还提供了多种 API 接口,供您上传一些自定义事件和变量,下面介绍自定义事件和变量 API 使用方法,后文简称埋点事件API。

GrowingIO所有运营时API需要在主线程调用。

API概览


// 发送自定义事件 API
GrowingIO gio = GrowingIO.getInstance();
gio.track(String eventId);
gio.track(String eventId, JSONObject eventLevelVariables);

// 发送页面级变量 API
GrowingIO gio = GrowingIO.getInstance();
gio.setPageVariable(Activity activity, String key, String value);
gio.setPageVariable(Activity activity, String key, Number value);
gio.setPageVariable(Activity activity, String key, Boolean value);

gio.setPageVariable(Activity activity, JSONObject pageLevelVariables);
gio.setPageVariable(Fragment fragment, String key, String value);
gio.setPageVariable(Fragment fragment, String key, Number value);
gio.setPageVariable(Fragment fragment, String key, Boolean value);
gio.setPageVariable(Fragment fragment, JSONObject pageLevelVariables);

// 发送转化变量 API
GrowingIO gio = GrowingIO.getInstance();
gio.setEvar(String key, String value);gio.setEvar(String key, Number value);
gio.setEvar(String key, Boolean value);
gio.setEvar(JSONObject conversionVariables);

// 发送用户变量 API
GrowingIO gio = GrowingIO.getInstance();
gio.setPeopleVariable(String key, String value);
gio.setPeopleVariable(String key, Number value);
gio.setPeopleVariable(String key, Boolean value);
gio.setPeopleVariable(JSONObject peopleVariables);

// 设置登录用户ID API
GrowingIO.getInstance().setUserId(String userId);

// 清除登录用户ID API
GrowingIO.getInstance().clearUserId();

// 设置访问用户变量,或者设置 A/B 测试标签
GrowingIO.getInstance().setVisitor(JSONObject visitorVariable);

接口定义

 1.设置登录用户ID(setUserId)

当用户登录之后调用setUserId API,设置登录用户ID。




//setuserid API原型
GrowingIO.getInstance().setUserId(String userId);

参数说明

参数名称

类型

是否必须

说明

userId

string

登录用户Id,长度限制小于等于1000;

如果值为空则清空了登录用户变量,不建议这么用,

请使用 clearUserId 清除登录用户变量。

示例代码


//setUserId API调用示例
GrowingIO.getInstance().setUserId("1234567890");


如果您的App每次用户升级版本时无需重新登录的话,为防止用户本地缓存被清除导致的无法被识别为登录用户,建议在用户每次升级App版本后初次访问时重新调用上述setUserId方法。

2. 清除登录用户ID(clearUserId)

当用户登出之后调用clearUserId,清除已经设置的登录用户ID。

示例代码


//clearUserId API原型和调用示例
GrowingIO.getInstance().clearUserId();

3. 设置登录用户变量(setPeopleVariable)

发送用户信息用于用户信息相关分析,在添加代码之前必须在打点管理界面上声明用户变量。


// setPeopleVariable API原型
GrowingIO gio = GrowingIO.getInstance();
gio.setPeopleVariable(String key, String value);
gio.setPeopleVariable(String key, Number value);
gio.setPeopleVariable(String key, Boolean value);
gio.setPeopleVariable(JSONObject peopleVariables);

参数名称

类型

是否必须

说明

key

string

用户变量的标识符。

限制:非空,长度限制小于等于50。

value

string

用户变量的值。

限制:非空,长度限制小于等于1000。

peopleVariables

JSONObject

用户变量用于用户信息相关的分析。

限制:非空,长度限制小于等于100(peopleVariables.length()<=100);

peopleVariables 内部不允许含有JSONObject或者JSONArray

key长度限制小于等于50,value长度限制小等于1000,值不能为空串,也就是""。


推荐您使用Mobile Debugger,我们为您列举了应用场景和验证示例,请参考:验证埋点事件>ppl(用户变量)事件

示例代码


// setPeopleVariable API调用示例一
GrowingIO gio = GrowingIO.getInstance();
gio.setPeopleVariable("gender", "male");


// setPeopleVariable API调用示例二
GrowingIO gio = GrowingIO.getInstance();
jsonObject.put("gender", "male");
jsonObject.put("age", "21");
gio.setPeopleVariable(jsonObject);

检验数据发送日志示例:

注意 t 等于ppl字段,表示用户变量发送成功,只需注意 var字段,其它字段无需仔细验证。


{    
       "s":"a35872af-13df-4479-90bc-25558d12328e",    
       // t 为事件类型, pvar 为发送用户变量事件    
       "t":"ppl",   
       "tm":1532339208991,    
       "d":"com.growingio.android.test",    
       "cs1":"GrowingIO",    
       // 用户变量   
        "var":{      
            "gender":"male",        
            "age":"21"   
        },    
        "gesid":311,    
        "esid":0
}

4. 设置访问用户变量(setVisitor)

当用户未登录时,定义用户属性变量,也可用于A/B测试上传标签。


版本支持:>=2.4.0


//setVisitor API原型
GrowingIO.getInstance().setVisitor(JSONObject visitorVar)

参数说明

参数说明

类型

是否必填

说明

visitorVar

JSONObject

不可使用嵌套的JSONObject对象,即为JSONObject中不可以放入JSONObject或者JSONArray

key 长度限制小于等于50,value长度限制小等于1000,值不能为空串,也就是""。

示例代码


//setVisitor API调用示例
GrowingIO gio = GrowingIO.getInstance();
jsonObject.put("gender", "male");
jsonObject.put("age", "21");
gio.setVisitor(jsonObject);

检验数据发送日志示例

注意 t 等于vstr字段,表示访问用户变量发送成功,其它字段无需仔细验证。


{    
        "s":"d334b4a1-57eb-4bf4-b426-64c1cce5a5c0",    
        // t 为事件类型, vstr 为发送访问用户变量事件    
        "t":"vstr",    
        "tm":1532341259134,    
        "d":"com.growingio.android.test",    
        "cs1":"GrowingIO",    //访问用户变量    
        "var":{        
              "gender":"male",        
              "age":"21"    
         },    
         "gesid":322,    
         "esid":0
}

5. 设置页面级变量(setPageVariable)

使用限制:适用于无埋点SDK。

发送页面级别的信息,在添加代码之前必须在打点管理界面上声明页面级变量。


// setPageVariable API原型
GrowingIO gio = GrowingIO.getInstance();
gio.setPageVariable(Activity activity, String key, String value);
gio.setPageVariable(Activity activity, String key, Number value);
gio.setPageVariable(Activity activity, String key, Boolean value);
gio.setPageVariable(Activity activity, JSONObject pageLevelVariables);

gio.setPageVariable(Fragment fragment, String key, String value);
gio.setPageVariable(Fragment fragment, String key, Number value);
gio.setPageVariable(Fragment fragment, String key, Boolean value);
gio.setPageVariable(Fragment fragment, JSONObject pageLevelVariables);

// SDK 2.6.6 以上支持 androidx, 增加接口:
gio.setPageVariableX(Fragment fragment, String key, String value);
gio.setPageVariableX(Fragment fragment, String key, Number value);
gio.setPageVariableX(Fragment fragment, String key, Boolean value);
gio.setPageVariableX(Fragment fragment, JSONObject pageLevelVariables);


注意确认当前页面,通过圈选方式最快定位当前页面,在当前页面埋点最稳定可靠,如果页面未确认,可能在Activity和Fragment嵌套的场景下埋点失败。如未能成功发送自定义页面变量,请参考”Android SDK集成FAQ > 无埋点API使用问题

参数选择是当前被识别的页面对象,可能是 Activity 或 Fragment,可以使用 Mobile Debugger 或debug日志确认。

参数名称

类型

是否必须

说明

activity

Activity

当前页面访问事件(page事件)发送的页面

fragment

Fragment

当前页面访问事件(page事件)发送的页面

key

string

页面级变量的标识符

限制:非空,长度限制小于等于50

value

string

页面级变量的值

限制:非空,长度限制小于等于1000

pageLevelvariables

JSONObject

页面级变的信息

限制:非null,长度限制小于等于100(pageLevelVariable.length()<=100);

pageLevelVariable 内部不允许含有JSONObject或者JSONArray

key 长度限制小于等于50,value长度限制小等于1000,值不能为空串,也就是""。


SDK 2.4.0 以上能够在 Log 日志中查看对应报错,之下版本无提示信息。调用后请关注日志,查看数据发送是否成功,事件类型tpvar

SDK 2.6.7 将页面级变量pageLevelVariables与该页面对象绑定,设置不同的值将会合并,如果想要清空,需要传 null 。

推荐您使用Mobile Debugger,我们为您列举了应用场景和验证示例,请参考:验证埋点事件>pvar(页面级变量)事件

示例代码


// setPageVariable API调用示例
GrowingIO gio = GrowingIO.getInstance();
JSONObject jsonObject = new JSONObject();
jsonObject.put("gender", "male");
jsonObject.put("age", "21");
gio.setPageVariable(myActivity, jsonObject);

检验数据发送日志示例:

注意 t 等于pvar字段,表示自定义事件发送成功,只需注意 var字段,其它字段无需仔细验证。


{    
          "s":"0a7e8150-c409-45d4-96ed-b5781fe652cb",    
          // t 为事件类型,pvar 页面级事件   
           "t":"pvar",    
           "tm":1532337448255,    
           "d":"com.growingio.android.test",    
           "cs1":"GrowingIO",   
            "p":"SetUserIdFragment1",    
            "ptm":1532337448255,    
            //页面级变量    
            "var":{        
                 "gender":"male",        
           
                 "age":"21"    
            },    
            "gesid":292,    
            "esid":0
}

6. 设置转化变量(setEvar)

发送一个转化信息用于高级归因分析,在添加代码之前必须在打点管理界面上声明转化变量。


// setEvar API原型
GrowingIO gio = GrowingIO.getInstance();
gio.setEvar(String key, String value);
gio.setEvar(String key, Number value);
gio.setEvar(String key, Boolean value);
gio.setEvar(JSONObject conversionVariables);

参数说明

参数名称

类型

是否必须

说明

key

string

转化变量的标识符

限制:非空,长度限制小于等于50

value

string

转化变量的值

限制:非空,长度限制小于等于1000

conversionVariables

JSONObject

转化变量用于高级归因分析

限制:非空,长度限制小于等于100(conversionVariables.length()<=100);

conversionVariables 内部不允许含有JSONObject或者JSONArray

key 长度限制小于等于50,value长度限制小等于1000,值不能为空串,也就是""。


推荐您使用Mobile Debugger,我们为您列举了应用场景和验证示例,请参考:验证埋点事件>evar(转化变量)事件


// setEvar API调用示例一
GrowingIO gio = GrowingIO.getInstance();
gio.setEvar("campaignId", "1234567890");


// setEvar API调用示例二
GrowingIO gio = GrowingIO.getInstance();
JSONObject jsonObject = new JSONObject();
jsonObject.put("campaignId", "1234567890");
jsonObject.put("campaignOwner", "Li Si");
gio.setEvar(jsonObject);

检验数据发送日志示例:

注意 t 等于evar字段,表示转化事件发送成功,只需注意 var字段,其它字段无需仔细验证。


{   
         "s":"e1c48845-dd60-4cf2-b1a5-a8e529d2188d",    
         // t 为事件类型, evar 为转化事件    
         "t":"evar",    
         "tm":1532338526083,    
         "d":"com.growingio.android.test",    
         "cs1":"GrowingIO",   
          // 转化变量    
          "var":{        
                "evarTest":111,       
                "campaignId":"1234567890",       
                "campaignOwner":"Li Si"   
          },    
          "gesid":300,    
          "esid":22
}


7. 设置自定义事件和事件级变量(track)

发送一个自定义事件。在添加所需要发送的事件代码之前,需要在打点管理用户界面配置事件以及事件级变量。


// track API原型
GrowingIO gio = GrowingIO.getInstance();
gio.track(String eventId);
gio.track(String eventId, JSONObject eventLevelVariables);

参数名称

类型

是否必须

说明

eventId

string

事件标识符。

限制:非空,长度限制小于等于50;SDK 2.4.0以下版本不支持中文,仅支持0~9、a~z以及下划线,并且不能以数字开头。

eventLevelVariable

JSONObject

事件发生时所伴随的维度信息。

限制:非空,长度限制小于等于100(eventLevelVariable.length()<=100);eventLevelVariable内部不允许含有JSONObject或者JSONArray;

key长度限制小于等于50,value长度限制小于等于1000,值不能为空字符串,也就是“”。


SDK 2.4.0以上能够在Log日志中查看对应报错,之下版本无提示信息。调用后请关注日志,查看数据发送是否成功,事件类型t为cstm。

推荐您使用Mobile Debugger,我们为您列举了应用场景和验证示例,请参考:验证埋点事件>cstm(事件以及关联的事件级变量)事件

示例代码


// track API调用示例一
GrowingIO gio = GrowingIO.getInstance();
gio.track("registerSuccess");


// track API调用示例二
GrowingIO gio = GrowingIO.getInstance();
JSONObject jsonObject = new JSONObject();
jsonObject.put("gender", "male");
jsonObject.put("age", "21");
gio.track("registerSuccess", jsonObject);

检验数据发送日志示例

注意 t 等于 cstm 字段,表示自定义事件发送成功,只需注意 varn 字段,其它字段无需仔细验证。


//展示 track 接口调用示例三日志内容
{    
     "s":"31e3aa14-5241-490c-821c-a741e9bf0f87",    
      // t 为事件类型, track 接口调用发送的事件类型为 cstm    
     "t":"cstm",    
     "tm":1532085495251,    
     "d":"com.growingio.android.test",    
     // n 为 eventId 参数携带的值   
     "n":"loanAmount",   
     // var 为 eventLevelVariable 参数携带的值    
     "var":{        
          "gender":"male",        
          "age":"21"    
     },    
     "ptm":0,   
     "gesid":18,    
     "esid":0,    "
     u":"b6247b01-a31a-3bc6-a391-4c456888c1ee"
}