Skip to main content

初始化配置


在初始化过程中,SDK会接收一个由用户传入的默认配置Configuration,配置相关说明如下表:

配置表格

Config参数类型是否必填默认值说明其它版本
accountIdStringnull项目ID,每个应用对应唯一值-
urlSchemeStringnull应用的URLScheme,唯一值-
setDataSourceIdStringnull应用的DataSourceId,唯一值-
setDataCollectionServerHostStringnull服务端部署后的 ServerHost-
setChannelStringnull应用的分发渠道-
setDebugEnabledbooleanfalse调试模式,会打印 Log 和错误,在线上环境请关闭-
setCellularDataLimitint10每天发送数据的流量限制,单位MB-
setDataUploadIntervalint15数据发送的间隔,单位秒-
setSessionIntervalint30会话后台留存时长,单位秒-
setRequestTimeoutlong,TimeUnit30OkHttp请求默认超时时间->= 3.5.3
setRequestDetailTimeoutlong,long,long,TimeUnit10+10+10分别为OkHttp 连接超时时间,read超时时间和write超时时间->= 3.5.3
setImeiEnabledbooleanfalse是否采集Imei信息,默认不采集->= 3.5.0
setDataCollectionEnabledbooleantrue是否采集数据-
setEventFilterInterceptorEventFilterInterceptorDefaultEventFilterInterceptor用于事件过滤,替换废弃的事件过滤和属性过滤->= 3.4.3
setExcludeEventint0设置事件过滤,已被废弃-3.5.0 删除
setIgnoreFieldint0设置事件属性过滤,已被废弃-3.5.0 删除
setIdMappingEnabledbooleanfalse是否开启多用户身份上报->= 3.3.0
setImpressionScalefloat0元素曝光事件中的比例因子,范围 [0-1]无埋点独有
setRequireAppProcessesEnabledbooleantrueSDK 是否能获取应用多进程ID->= 3.3.4
addPreloadComponentLibraryGioModulenull注册自定义/预定义模块(如加密模块、OAID模块)->= 3.3.4
addPreloadComponentLibraryGioModule,Configurablenull注册自定义/预定义模块及其配置文件->= 3.4.3
setWebViewBridgeEnabledbooleantrue是否全量采集 hybrid 数据无埋点独有>= 3.5.1

1. SDK必需参数

accountId, urlScheme, setDataSourceId, setDataCollectionServerHost 这四个参数为 CDP 用户必须要设置的参数,若不清楚具体数值请询问相关服务端对接的开发同事。

2. setChannel

对应应用的分发渠道字段,若设置了值则会在每个事件上报中含有渠道信息。 比如在初始化中设置了.setChannel("Docs"),则会在上报信息中出现 appChannel 字段:

    ╔═══════════════════════════════════════════════════════════════════════════════════════
{
"platform": "Android",
"appChannel": "Docs",
"screenHeight": 1920,
"screenWidth": 1080,
║ ...
}
╚═══════════════════════════════════════════════════════════════════════════════════════

3. setDebugEnabled

默认不开启,开启后会输出 SDK Log 日志。 建议做法设为 setDebugEnabled(BuildConfig.DEBUG) 这样既能保证Debug时能够打印日志,正式发布时也能关闭日志;

4. setCellularDataLimit

为每日在4G环境下的流量限制,默认为10M。WIFI环境下则不计流量。

5. setDataUploadInterval

上报间隔。GrowingIO SDK 会先将事件存入数据库中,然后以每隔默认时间15秒的情况下向服务器发送事件包(最大50条事件)。

6. setSessionInterval

设置会话后台留存时长。指当前会话在应用进入后台后的最大留存时间,默认为30秒。另外,其他情况下也会重新生成一个新的会话,如设置用户ID等核心信息,重新打开数据收集等。

7. setRequestTimeout

设置OkHttp超时时间,默认为30秒。另外,如果想要详细设置OkHttp具体的超时时间,可以调用 setRequestDetailTimeout,分别为连接超时时间,读取超时时间,写入超时时间。

8. setDataCollectionEnabled

数据收集。当数据收集关闭时,SDK将不会再获取设备信息,也不会产生事件和上报事件。

9. setImeiEnabled

是否采集Imei信息,默认不采集,且Android 10及以上已不再支持 Imei 的获取。

10. setEventFilterInterceptor

事件过滤,该接口需要用户提供一个拦截器用于事件拦截的自定义化。使用事件拦截器时请注意使用,不要过滤掉重要信息,防止数据采集信息丢失或者少采。

// 声明一个事件过滤器,继承 `DefaultEventFilterInterceptor` 或 `EventFilterInterceptor`
class CustomEventFilterInterceptor implements EventFilterInterceptor {

// 根据事件类型来过滤事件,返回 false 表示拦截,返回 true 表示不过滤
// 如下例表示拦截事件类型为 “PAGE” 的事件
@Override
public boolean filterEventType(String eventType) {
if (FilterEventType.PAGE.equals(eventType)) return false;
return true;
}

// 过滤事件基础属性,属性设置 false 表示拦截,设置 true 表示不过滤
// 如下例表示事件中不再包含屏幕宽高的属性。
@Override
public Map<String, Boolean> filterEventField(String type, Map<String, Boolean> fieldArea) {
fieldArea.put(BaseField.SCREEN_HEIGHT, false);
fieldArea.put(BaseField.SCREEN_WIDTH, false);
return fieldArea;
}

// 针对无埋点的页面事件的路径进行过滤。
// 如下例表示若页面事件中的路径包含 “TestActivity” 则过滤。
@Override
public boolean filterEventPath(String path) {
return !path.contains("TestActivity");
}

// 针对自定义事件的事件名称进行过滤。
// 如下例表示若自定义事件中名称为 "test" 则过滤。
@Override
public boolean filterEventName(String eventName) {
return !"test".equals(eventName);
}
}

之后再调用该接口设置拦截器

GrowingTracker.startWithConfiguration(this,
new CdpTrackConfiguration("accountId", "urlScheme")
...
.setEventFilterInterceptor(new CustomEventFilterInterceptor())
);

11. setIdMappingEnabled

是否支持多用户身份上报, 默认不支持。 是否支持多用户身份上报, 与 API 接口setLoginUserId(String userId, String userKey)对应, 开启时, userKey会在每次上报数据时携带, 关闭时, 接口与setLoginUserId(String userId)作用相同

12. setImpressionScale

曝光比例。与曝光事件结合使用。曝光比例是指当一个曝光的View出现在屏幕时可见的部分占据自身尺寸的比例,比如说若设为 0 则表示只要出现即产生曝光事件,若设为1则表示要整个View都出现在屏幕中。

13 addPreloadComponent

注册功能模块,为 Growingio SDK 添加更多的额外功能。

// 初始化SDK时,可以注册对应模块
GrowingAutotracker.startWithConfiguration(this,
new CdpAutotrackConfiguration("accountId", "urlScheme")
//...
.addPreloadComponent(<模块对象>, <模块配置>)
// 或者
.addPreloadComponent(<模块对象>)

);

模块列表请参考 功能模块一览

14 setWebViewBridgeEnabled

是否全量采集 hybrid 数据(默认为 true)

无埋点默认会采集对应 webview 的 hybrid 事件,设置为 false,可以关闭采集 hybrid 数据。 如果需要设置采集单个 webview 的 hybrid 事件,可以通过运行时 API 接口bridgeWebView(View webView)开启采集。