在 module 级别的 build.gradle 文件中添加依赖
dependencies {//埋点CDP SDKimplementation 'com.growingio.android:vds-android-agent:cdp-1.2.7'}
请将GrowingIO.starWithConfiguration 加在您的 Application 的onCreate方法中。
SDK的初始化时机必须在 Application的onCreate方法中进行。
public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// GrowingIO 初始化代码GrowingIO.startWithConfiguration(this, new Configuration().setProjectId("获取您的项目ID").setDataSourceId("填写您的数据源ID").setURLScheme("填写UrlScheme").setTestMode(BuildConfig.DEBUG).setDebugMode(BuildConfig.DEBUG).setTrackerHost("这里设置为您的 HOST ").setChannel("XXX应用商店"));}}
将应用的 URLScheme 和应用权限添加到你的 AndroidManifest.xml 中。
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.cdpdemo"><!-- GIO 需要的权限 --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><applicationandroid:name=".MyApplication"<activity android:name=".MainActivity"><!--请添加这里的整个 intent-filter 区块,并确保其中只有一个 data 字段--><intent-filter><data android:scheme="growing.您的URL Scheme" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /></intent-filter><!--请添加这里的整个 intent-filter 区块,并确保其中只有一个 data 字段--></activity></application></manifest>
如果您启用了混淆,请在您的 proguard-rules.pro 中加入如下代码。
-keep class com.growingio.** {*;}-dontwarn com.growingio.**-keepnames class * extends android.view.View-keepnames class * extends android.app.Fragment-keepnames class * extends android.support.v4.app.Fragment-keepnames class * extends androidx.fragment.app.Fragment-keep class android.support.v4.view.ViewPager{*;}-keep class android.support.v4.view.ViewPager$**{*;}-keep class androidx.viewpager.widget.ViewPager{*;}-keep class androidx.viewpager.widget.ViewPager$**{*;}
如果您使用的AndRestGuard ,请在白名单中添加GrowingIO。
R.string.growingio*
初始化配置API在Application中初始化SDK处使用。
API | 默认值 | 是否必填 | 说明 |
setProjectId | 无 | 是 | 项目ID。 |
setFlushInterval | 15s | 否 | 设置获取发送数据的事件间隔,默认15s |
setCellularDataLimit | 10MB | 否 | 设置每天使用数据网络(2G、3G、4G)上传的数据量的上限,默认值10485KB(10MB) |
getCellularDataLimit | 无 | 否 | 设置每天使用数据网络(2G、3G、4G)上传的数据量的上限,默认值10485KB(10MB) |
setDataSourceId | 无 | 是 | 数据源ID。 |
srtURLScheme | 无 | 是 | 设置URLScheme,是应用唯一标识。 |
setDebugMode | false | 否 | 在local中输出采集日志。 |
setTestMode | false | 否 | 实时发送数据,开启则不遵循移动网络 状态下数据发送大小默认 3M 限制以及 采集数据缓存30秒发送策略。 为了方便开发者查看日志,一般和 setDebugMode一起使用。 |
setChannel | 无 | 否 | 设置App下载渠道。 |
setImeiEnable | true | 否 | 为了海外应用市场上架应用,设置为 fasle则SDK不采集。 |
setAndroidIdEnable | true | 否 | 为了海外应用市场上架应用,设置为 false则SDK不采集Android ID。 |
disableDataCollect | 无 | 否 | 设置GDPR生效 |
注意:GrowingIO 所有API 都需要在主线程调用。
| |
setGeoLocation | 设置经纬度,并在vst事件中发送,Android SDK暂时没办法自动获取GPS数据,如果您要采集GPS数据,需要在您的App每次获取完GPS数据之后,通过该API告知SDK。如果您不设置,我们默认使用用户IP的location。 |
clearGeoLocation | 清空经纬度。 |
setChannel | 保留原有设置渠道信息的方法,新增在运行时设置渠道信息。新增的接口无法保证所有数据都一定会带上渠道信息(虽然我们会通过重发机制进行保证,但是无法做到100%)。 |
disableDataCollect | 遵守欧洲联盟出台的通用数据保护条例,用户不授权,不采集用户数据。 |
enableDataCollect | 遵守欧洲联盟出台的通用数据保护条例,用户授权,采集用户数据。 |
示例代码:
// 得到 GrowingIO 实例后可以调用其中 APIIGrowingIO gio = GrowingIO.getInstance();gio.setUserId("xiaowang");
当用户登录应用后调用setUserId,上传登录用户ID。
参数名称 | 类型 | 是否必须 | 说明 |
userId | String | 是 | 应用的登录用户ID。 |
代码示例:
//setuserId API调用示例GrowingIO.getInstance().setUserId("xiaowang")
Tips:
如果您的App每次用户升级版本时无需重新登录的话,为防止用户本地缓存被清除导致的无法被识别为登录用户,建议在用户每次升级App版本后初次访问时重新调用上述setUserId方法。
当用户退出登录后,调用clearUserId,清除已经设置的登录用户ID。
//clearUserId API原型和调用示例GrowingIO.getInstance().clearUserId();
发送一个自定义事件,在添加所需发送的事件代码之前,需要在打点管理用户界面配置事件及事件属性。
参数名称 | 类型 | 是否必须 | 说明 |
eventId | String | 是 | 事件标识符。 |
eventLevelVariable | Map或JSONObject | 否 | 事件发生时所伴随的维度信息。 限制:value 仅支持字符串、整数、小数 key 长度 <=50,value 长度 <=1000 |
itemId | String | 否 | 物品模型唯一标识属性,如"order_id" |
itemKey | String | 否 | 物品模型唯一标识属性的值,如"123456" |
示例代码:
// track API调用示例一IGrowingIO gio = GrowingIO.getInstance();gio.track("registerSuccess");// track API调用示例二 - 事件属性IGrowingIO gio = GrowingIO.getInstance();JSONObject jsonObject = new JSONObject();jsonObject.put("gender", "male");jsonObject.put("age", "21");gio.track("registerSuccess", jsonObject);// track API调用示例三 - 物品模型IGrowingIO gio = GrowingIO.getInstance();JSONObject jsonObject = new JSONObject();String eventName = "payOrder";eventVar.put("k1","v1");eventVar.put("k2","v2");String itemKey = "order_id";String itemId = '123456';gio.track(eventName, eventVar, itemId, itemKey);
自定义用户属性,用于用户属性相关的分析,比如年龄、性别、会员等级等。
参数名称 | 类型 | 是否必传 | 说明 |
key | String | 否 | 用户变量的标识符。 |
value | String | 否 | 用户变量的值。 |
peopleVariables | Map或JSONObject | 否 | 限制:value 仅支持字符串、整数、小数 key 长度 <=50,value 长度 <=1000 |
代码示例:
//代码示例一try {GrowingIO.getInstance().setUserAttributes(new JSONObject().put("age", 54).put("gender", "male"));} catch (JSONException e) {e.printStackTrace();}//代码示例二HashMap<String,Object> userAttr = new HashMap<>();userAttr.put("age",54);userAttr.put("gender","female");GrowingIO.getInstance().setUserAttributes(userAttr);
参数名称 | 类型 | 是否必须 | 说明 |
pageName | String | 是 | page事件标识符。 |
/**发送自定义Page事件@param pageName : 页面名称, pageName为正常中英文数字组合的字符串, 长度<=1000, 请不要含有 "'|\*&[email protected]/', 等特殊字符*/IGrowingIO trackPage(String pageName);//代码示例GrowingIO.getInstance().trackPage("TrackTestPage");
参数名称 | 类型 | 是否必须 | 说明 |
webView | WebView | 是 | WebView实例化后立刻调用 |
//代码示例private void initWebView() {mWebView = findViewById(R.id.web_view);GrowingIO.getInstance().bridgeForWebView(mWebView);mWebView.loadUrl("https://www.growingio.com");}
需要在 webview 初始化后调用