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 不采集 | >=2.7.8 | - |
androidIdEnable | true | 为了海外应用市场上架应用,设置为 false 则 SDK 不采集 | >=2.7.8 | - |
googleAdIdEnable | true | 为了海外应用市场上架应用,设置为 false 则 SDK 不采集 | >=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。
初始化配置项均在Application
的onCreate
方法中 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 | 默认值 | 说明 | 无埋点SDK版本支持 | 埋点SDK版本支持 |
setDebugMode | false | 在Logcat中输出采集日志 | ALL | ALL |
setTestMode | false | 实时发送数据,开启则不遵循移动网络状态下数据发送大小默认 3M 限制以及采集数据缓存30秒发送策略。 为了方便开发者查看日志,一般和 | ALL | ALL |
setChannel | 无 | 设置App下载渠道 | ALL | ALL |
useID | true | 是否在计算 | <2.6.0 | - |
API | 默认值 | 说明 | 无埋点SDK版本支持 | 埋点SDK版本支持 |
setDeeplinkCallback | 无 | DeepLink 回调接口,获得自定义参数以便跳转对应 APP页 面 | >=2.3.2 | ALL |
setTrackWebView | true | 是否采集全部的 | ALL | - |
supportMultiProcessCircle | false | 是否使用多进程圈选功能 | ALL | - |
setMutiprocess | false | 使用了多进程必须配置,自定义事件和变量值才会多进程共享 | ALL | ALL |
trackAllFragments | false | 是否采集所有Fragment | ALL | - |
setHashTagEnable | false | 在 | ALL | - |
API | 默认值 | 说明 | 无埋点SDK版本支持 | 埋点SDK版本支持 |
setDisabled | false | SDK 是否采集数据,设置为 | ALL | ALL |
setSampling | 1 | 采样率[0.01~1],若设置sampling = 0.01,则 1% 的设备会被采集数据,每次启动会根据用户设置的采样率判断设备是否在采集的范围之内,使用之前请咨询技术支持 | ALL | ALL |
setSessionInterval | 30 * 1000 | 在后台停留时长超过此值,则产生新的 | ALL | ALL |
setFlushInterval | 30 * 1000 | 数据刷新的最长时间间隔,默认30 秒 。如果距离上次发送数据事件超过此时间则发送事件 | ALL | ALL |
setThrottle | false | 是否节流发送,节流发送时 | ALL | - |
setDisableImpression | false | 是否采集 | ALL | - |
disableCellularImp | false | 否关闭移动蜂窝网 | ALL | - |
setCellularDataLimit | 3* 1024 *1024 | 一天的时间之内,在移动蜂窝网下的数据最大传输量,默认3M。 | ALL | ALL |
setBulkSize | 300 | 如果数据库存储数据条数大于等于 | ALL | ALL |
setImeiEnable | true | 设置为 false 则 SDK 不采集 | >=2.7.8 | - |
setAndroidIdEnable | true | 设置为 false 则 SDK 不采集 | >=2.7.8 | - |
setGoogleAdIdEnable | true | 设置为 false 则 SDK 不采集 | >=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 暂时没办法自动获取 | ALL | ALL |
clearGeoLocation | 清空经纬度 | ALL | ALL |
setViewInfo | 配置 view 的 Tag,标记 View ,并在 GrowingIO 相关事件中发送 ,内容对应 例如:在商品 注意:适用于原有 | ALL | - |
setViewContent | 配置 view 的 Tag,标记 View ,并在 GrowingIO相关事件中发送,内容对应 SDK默认不会采集ImageView的内容,为了能对不同的图片元素(ImageView)区分统计,需要对每个具有分析意义的图片元素(ImageView)添加描述。 | ALL | - |
setViewID | 设置 View id ,配置之后对应 xPath 中的 view id,SDK将会使用Layout文件中的ID来识别一个元素。 如果部分元素在Layout文件中没有ID,建议在Layout文件中添加。 对于动态生成的元素,可以使用如下方法对它设置唯一的ID。 当您的应用界面改版时,可能会导致无法准确地统计已经圈选的元素。因此,对于应用中的主要流程涉及到的界面元素,建议您为它们设置固定的唯一ID,以保证数据的一致性。
| ALL | - |
setChannel |
| 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 |
| ALL | - |
disableImpression | 不发送 | ALL | - |
ignoredView | 忽略配置的 View ,不采集用户数据。 如果您需要忽略某些特殊内容,比如倒计时元素或涉及隐私的内容,可以使用此接口。 | ALL | - |
ignoreFragment | 不采集配置的 Fragment 页面浏览事件( | ALL | - |
ignoreFragmentX | 支持 AndroidX , 功能同 ignoreFragment。 | >=2.6.6 | - |
ignoreViewImp | 忽略配置的 View ,不采集用户元素浏览数据。 如果您需要忽略某些大量的 数据,比如弹幕,可以使用此接口。 | >=2.6.7 | - |
setPageName | 设置页面别名,有些时候,对于完成某个功能的页面,统计时可能需要进一步细分。 比如,对于展示商品列表的页面,需要区分衣物类商品,以及食品类商品的两种列表的访问量。 注意
| ALL | - |
setPageNameX | 支持 AndroidX , 功能同 setPageName。 | >=2.6.6 | - |
getSessionId | 得到 session id | ALL | ALL |
getDeviceId | 获取设备id,对应数据采集的 | ALL | ALL |
trackBanner | 设置所有广告图对应的广告内容描述,内容描述需要跟广告的顺序相同。 | ALL | - |
trackEditText | SDK 默认不采集用户输入框的内容,设置以后,采集除了密码以外的输入框文本内容。 当这个输入框失去焦点(包括应用退到后台),且输入框内容跟获取焦点前相比发生变化时,输入框内文字会被发送回GrowingIO。 注意:对于密码输入框,即便标记为需要采集,SDK也会忽略,不采集它的数据。 | ALL | - |
trackFragment | 如果APP初始化时候,没有设置 请在 | ALL | - |
trackFragmentX | 支持 AndroidX , 功能同 trackFragment。 请在 | >=2.6.6 | - |
trackWebView | 采集 | <2.6.0 | - |
trackX5WebView | 采集 X5WebView 事件,默认采集 | <2.6.0 | - |
setTabName | 如果您有某些View动态添加到ViewTree中并且在父容器中的位置不固定(例如常见的多Fragment实现的Tab切换),请给每个View设置ID来辅助统计 | ALL | - |
setImeiEnable | 设置为 false 则 SDK 不采集 | >=2.7.8 | - |
setAndroidIdEnable | 设置为 false 则 SDK 不采集 | >=2.7.8 | - |
setGoogleAdIdEnable | 设置为 false 则 SDK 不采集 | >=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(
|
推荐您使用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 | 是 | 不可使用嵌套的 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(
|
SDK 2.4.0
以上能够在 Log 日志中查看对应报错,之下版本无提示信息。调用后请关注日志,查看数据发送是否成功,事件类型t
为pvar
。
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(
|
推荐您使用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
字段,表示自定义事件发送成功,只需注意 var
、n
字段,其它字段无需仔细验证。
//展示 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" }