SDK接入
帮助中心 > 技术文档 > 客户端SDK > Android SDK > SDK接入
- 1. 开启全埋点(自动采集)
- 2. 用户关联
- 2.1 关联用户ID
- 2.2 获取设备唯一ID
- 2.3 自定义设备唯一ID
- 3. 用户属性
- 3.1 设置用户属性
- 3.2 固定初始值的属性
- 3.3 数值类型的属性
- 3.4 集合类型的属性
- 3.5 属性取消
- 3.6 清空用户属性
- 4. 自定义埋点
- 4.1 自定义埋点
- 4.2 自定义时长埋点
- 5 事件属性
- 5.1 设置公共属性
- 5.2 获取预置属性
- 6. 数据存储与发送
- 6.1 上报条件
- 6.1.1 缓存条数
- 6.1.2 发送间隔
- 6.1.3 设置数据的网络上传策略
- 6.2 立即上报(强制上报)
- 6.3 本地数据缓存上限值
- 6.4 清空本地缓存事件
- 6.5 使用自签证书
- 7. 全埋点高级控制
- 7.1 关闭和重启全埋点
- 7.2 activity全埋点控制
- 7.3 fragment全埋点控制
- 7.4 view全埋点控制
- 7.5 页面设置自定义属性
- 7.6 控件设置自定义属性
- 8. 其他功能
- 8.1 开启屏幕方向的自动采集
- 8.2 开启采集页面浏览时长
- 8.3 设置和清除位置信息
- 8.4 开启Crash信息的自动采集
- 8.5 开启推送点击事件的自动采集
- 8.6 开启App与H5打通功能
- 8.7 日志开关
- 8.8 禁用SDK
- 8.9 属性值长度
Android SDK 接入流程主要分为两个步骤(两个文档):
1、SDK配置:将对应的SDK集成到您的产品项目中,然后进行初始化代码处理;
2、SDK接入:将需要埋点的数据,按照SDK包装不同的方法进行数据上送,其中功能主要包含两大类:全埋点(自动采集数据上送)、自定义埋点(手动设置业务数据上送)。
1. 开启全埋点(自动采集)
SDK 可以自动采集一些用户行为,如 App 启动、退出、浏览页面、控件点击,共计四种。
说明:在初始化时,通过setAutoTrackEventType进行配置开启,不配置则视为关闭全埋点。
/**
* 开启全埋点,默认关闭
*/
//比如:开启全部类型
builder.setAutoTrackEventType(IAutoTrackEventType.APP_CLICK |
IAutoTrackEventType.APP_START |
IAutoTrackEventType.APP_END |
IAutoTrackEventType.APP_VIEW_SCREEN);
2. 用户关联
2.1 关联用户ID
当用户注册成功或登录成功时,需要调用 SDK 的 setUserUId() 方法。
HinaCloudSDK.getInstance().setUserUId("您平台用户唯一标识");// 比如:登录手机号、登录邮箱 、用户唯一主键值
注意:为了准确记录登录用户的行为信息,建议在以下时机各调用一次用户登录方法:
· 用户在注册成功时
· 用户登录成功时
· 已登录用户每次启动 App 时
2.2 获取设备唯一ID
说明:如需获取设备唯一id,请在初始化SDK后调用getDeviceUId()方法进行获取。
HinaCloudSDK.getInstance().getDeviceUId();
2.3 自定义设备唯一ID
说明:默认情况下,SDK 会生成设备唯一ID 并可以保证该ID的唯一性,如需替换SDK默认分配的,配置如下;
//初始化时配置
builder.setDeviceUId(String deviceUId)
//或者在初始化后,通过API配置
HinaCloudSDK.getInstance().setDeviceUId(xxx);
注意: SDK 默认使用 AndroidId 作为设备 ID,如果 AndroidId 获取不到则获取随机的 UUID。
3. 用户属性
3.1 设置用户属性
说明:同一个 key 多次设置时,会进行覆盖,value 值只会记录最后设定的值。
HinaCloudSDK.getInstance().userSet(String key, Object value);
// 或
HinaCloudSDK.getInstance().userSet(JSONObject properties);
3.2 固定初始值的属性
说明:同一个 key 多次设置时,不会进行覆盖,value 值只会记录初次设定的值。
HinaCloudSDK.getInstance().userSetOnce(String key, Object value);
// 或
HinaCloudSDK.getInstance().userSetOnce(JSONObject properties);
3.3 数值类型的属性
说明:同一个 key 多次设置时,value 值(数值类型)进行求和计算。
HinaCloudSDK.getInstance().userAdd(String key, Number value)
// 或者使用JSONObject,注意此情况下 JSONObject 里面的 value 值需要是数值类型;
HinaCloudSDK.getInstance().userAdd(JSONObject properties)
3.4 集合类型的属性
说明:同一个 key 多次设置时,value 值(字符串类型)集合进行追加。
Set<String> books = new HashSet<String>();
books.add("三字经");
books.add("论语");
HinaCloudSDK.getInstance().userAppend("books", books);
3.5 属性取消
说明:取消已设置的某个用户属性。
HinaCloudSDK.getInstance().userUnset(String key);
3.6 清空用户属性
说明:清空当前用户的用户属性。
HinaCloudSDK.getInstance().userDelete();
4. 自定义埋点
用于记录埋点事件。
4.1 自定义埋点
说明:使用track()方法进行直接埋点,埋点事件支持添加自定义属性。
//直接埋点,不含自定义属性,比如:点击“开始阅读”按钮;
HinaCloudSDK.getInstance().track("novel_read_btn_click");
//直接埋点,添加自定义属性,比如:点击“开始阅读”按钮,添加属性:小说id、小说的章节;
try {
JSONObject properties = new JSONObject();
properties.put("novel_id", "1234567890");
properties.put("novel_chapter", "3");
HinaCloudSDK.getInstance().track("novel_read_btn_click", properties);
} catch (JSONException e) {
e.printStackTrace();
}
4.2 自定义时长埋点
说明:需要成对调用计时器的开始和结束方法,以此来实现对统计时长的事件采集;
*在事件开始时,调用trackTimerStart("event1")
,该方法并不会真正发送事件;
*在事件结束时,调用trackTimerEnd("event1", properties)
,SDK 会触发事件,并自动将事件持续时间记录在事件属性 “event_duration” 中。
// 比如:开始观看视频;
HinaCloudSDK.getInstance().trackTimerStart("watch_video");
// 比如:结束观看视频;
try {
JSONObject properties = new JSONObject();
properties.put("video_id", "1234567890");//添加自定义属性
properties.put("video_type", "娱乐");//添加自定义属性
// 调用 trackTimerEnd 方法,会触发事件,并在属性 event_duration 中记录时长;
HinaCloudSDK.getInstance().trackTimerEnd("watch_video", properties);
} catch (JSONException e) {
e.printStackTrace();
}
5 事件属性
在进行埋点事件追踪时,您可以根据需求对埋点事件进行属性的定义。目前 SDK 中提供了公共属性用于给每个埋点事件添加属性。
5.1 设置公共属性
说明:公共属性是指对于所有事件都需要添加的属性,设置之后 SDK 会在每次触发埋点时,自动获取并添加到触发的事件中。
HinaCloudSDK.getInstance().registerCommonProperties(new ICommonProperties() {
@Override
public JSONObject getCommonProperties() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("appName", PackageUtils.getAppName());
jsonObject.put("isLogin", UserUtils.isLogin());
return jsonObject;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
5.2 获取预置属性
说明:如需了解和使用预置属性,可以通过此方法获取预置属性。
JSONObject jsonObject = HinaCloudSDK.getInstance().getPresetProperties()
6. 数据存储与发送
SDK上报数据的方式分为:实时上报和批量上报;
实时上报:如果追求数据采集的时效性,可以在部分关键埋点后,调用 flush() 方法,强制将数据上报到服务器;
批量上报:为了减少性能和电量损耗,在事件触发后不会立即上报,而是先将事件缓存在本地,然后定时、批量进行上报。
在每次调用 track()、setUserUId()、userSet() 等方法时,SDK 会将埋点事件保存在数据库中,并会检查如下条件,判断是否向服务器上传数据。满足条件后,SDK 会将数据 gzip 压缩后,批量发送到服务器。
1.是否是 WIFI/2G/3G/4G/5G 网络条件
2.是否满足发送条件之一:
a.与上次发送的时间间隔是否大于 flushInterval
b.本地缓存日志数目是否大于 flushPendSize
c.事件类型为 setUserUId() 方法触发的 H_SignUp 事件
注意:在 App 进入后台状态或监听到网络切换有网络时,SDK 会调用 flush() 方法,将缓存的数据发送到服务器。
6.1 上报条件
6.1.1 缓存条数
说明:设置本地缓存的最大条数,默认为 100 条。
//初始化时配置
builder.setFlushPendSize(int size);//最少50条。
//或者在初始化后,通过API配置
HinaCloudSDK.getInstance().setFlushPendSize(xxx);
6.1.2 发送间隔
说明:设置埋点数据发送的间隔时间,默认为 15s。
//初始化时配置
builder.setFlushInterval(int interval);//最小 5 秒,单位毫秒。
//或者在初始化后,通过API配置
HinaCloudSDK.getInstance().setFlushInterval(xxx);
6.1.3 设置数据的网络上传策略
说明:默认情况下,在 WIFI/3G/4G/5G 网络条件下,SDK 都会尝试去同步数据。可以自由组合来指定发送数据的网络策略。
//初始化时配置
builder.setNetworkTypePolicy(ISendNetworkType.TYPE_2G
| ISendNetworkType.TYPE_3G
| ISendNetworkType.TYPE_4G
| ISendNetworkType.TYPE_WIFI
| ISendNetworkType.TYPE_5G);
//或者在初始化后,通过API配置;
HinaCloudSDK.getInstance().setFlushNetworkPolicy(xxx);
6.2 立即上报(强制上报)
说明:如果追求数据采集的时效性,调用flush(),即可立即执行上报。
HinaCloudSDK.getInstance().flush();
注意:在 App 进入后台状态或监听到网络切换有网络时,SDK 会调用 flush() 方法,将缓存的数据发送。
6.3 本地数据缓存上限值
说明:SDK 本地数据库默认缓存数据的上限值为 32MB。
//初始化时配置
builder.setMaxCacheSize(long maxCacheSize)//最小 16MB(16 * 1024 * 1024),单位 byte;
//或者在初始化后,通过API配置;
HinaCloudSDK.getInstance().setMaxCacheSize(xxx);
注意:当存储数量达到上限值,会依次丢弃老数据,保留最新的数据。
6.4 清空本地缓存事件
说明:删除 App 本地存储的所有事件。
HinaCloudSDK.getInstance().clear();
注意:如果不是特殊要求,请不要调用此方法。
6.5 使用自签证书
说明:初始化 SDK 时,通过 setSSLSocketFactory() 方法设置自签证书,设置自签证书后,SDK 内所有的 HTTPS 请求会进行此接口设置的证书校验。
builder.setSSLSocketFactory(SSLSocketFactory sslSocketFactory)
7. 全埋点高级控制
SDK 可以自动采集一些用户行为,如 App 启动、退出、浏览页面、控件点击,共计四种。
7.1 关闭和重启全埋点
说明:在初始化时,通过setAutoTrackEventType进行配置开启,不配置则视为关闭全埋点。
//忽略指定类型的全埋点事件(Integer对应四种自动采集的事件常量)
HinaCloudSDK.getInstance().disableAutoTrackEventType(List<Integer> list)
//重启被忽略的全埋点事件(Integer对应四种自动采集的事件常量)
HinaCloudSDK.getInstance().enableAutoTrackEventType(List<Integer> list)
注意:fragment页面采集需要单独开启和配置,具体详见【7.3 fragment全埋点控制】;
7.2 activity全埋点控制
说明:通过 ignoreAutoTrackActivity() 方法可以忽略某个或某些 Activity 的 App 点击事件与 App 页面浏览事件(包含所属 Fragment)。同时也可以通过 resumeAutoTrackActivities() 方法恢复被忽略的页面。
//忽略单个、多个 Activity
HinaCloudSDK.getInstance().ignoreAutoTrackActivities(List<Class<?>> activitiesList);
//恢复被忽略的 Activity
HinaCloudSDK.getInstance().resumeAutoTrackActivities(List<Class<?>> activitiesList);
7.3 fragment全埋点控制
说明:通过 trackFragmentAppViewScreen() 方法可以开启全部 Fragment 页面浏览事件的自动采集功能。
//初始化 SDK 之后,开启自动采集 Fragment 页面浏览事件
HinaCloudSDK.getInstance().trackFragmentAppViewScreen();
//开启后,指定 Fragment采集
HinaCloudSDK.getInstance().enableAutoTrackFragment(Class<?> fragment);
//开启后,忽略单个、多个Fragment采集
HinaCloudSDK.getInstance().ignoreAutoTrackFragments(List<Class<?>> fragmentList);
//开启后,对被忽略的 Fragment恢复采集
HinaCloudSDK.getInstance().resumeIgnoredAutoTrackFragments(List<Class<?>> fragmentList);
注意:enableAutoTrackFragment() 方法用于采集指定的 Fragment 页面,ignoreAutoTrackFragment() 方法用于忽略指定的 Fragment 页面。当二者设置同时存在时,以 enableAutoTrackFragment() 方法设置的为准,ignoreAutoTrackFragment() 方法设置的信息不再生效。
7.4 view全埋点控制
说明:view全埋点采集控制,支持某个view或某类view忽略;
//通过 ignoreView() 方法可以忽略某个 View 对象的 App 点击事件
HinaCloudSDK.getInstance().ignoreView(View view);
//通过 ignoreViewType() 方法可以忽略某种控件类型及其子类型的 App 点击事件
HinaCloudSDK.getInstance().ignoreViewType(Class<?> viewType);
7.5 页面设置自定义属性
说明:通过 IScreenAutoTracker 接口可以给页面设置自定义属性或修改预置属性的取值;实现该接口的类需要是页面对应的 Activity 类或者 Fragment 类;在 IScreenAutoTracker 接口 getPageCustomProperties() 方法返回的 JSONObject 中,可以通过设置 H_title、H_screen_name 属性来替换 SDK 默认采集 Activity 和 Fragment 类页面标题和页面名称。
public interface IScreenAutoTracker {
String getPageUrl();
JSONObject getPageCustomProperties() throws JSONException;
}
7.6 控件设置自定义属性
说明:通过 setViewProperties() 方法可以扩展指定 View 对象的 App 点击事件的事件属性。
HinaCloudSDK.getInstance().setViewProperties(View view, JSONObject properties);
注意:对需要加自定义属性的控件,都要进行设置;
8. 其他功能
8.1 开启屏幕方向的自动采集
说明:初始化 SDK 时,进行如下配置,即可开启屏幕方向属性的收集,屏幕方向信息记录在事件的 H_screen_orientation 属性中。
builder.enableTrackScreenOrientation(boolean enable);
注意:该接口开启后会读取手机传感器信息,请根据合规需要进行说明。
8.2 开启采集页面浏览时长
说明:SDK 支持自动采集页面离开事件(H_AppPageLeave),来采集页面浏览时长。在初始化 SDK 时,使用enableTrackPageLeave()方法配置开启。
/**
* isTrackPageLeave: 是否采集 Activity 页面离开事件
* isTrackFragmentPageLeave: 是否采集 Fragment 页面离开事件
**/
builder.enableTrackPageLeave(boolean isTrackPageLeave, boolean isTrackFragmentPageLeave);
8.3 设置和清除位置信息
说明:通过 setGPSLocation() 方法,把第三方定位获取到的经纬度信息设置给 SDK,设置之后经纬度信息记录在事件的 H_longitude、H_latitude 属性中。清除位置信息调用 clearGPSLocation() 方法进行清除。
//设置经纬度
HinaCloudSDK.getInstance().setGPSLocation(double latitude, double longitude)
//清除位置信息
HinaCloudSDK.getInstance().clearGPSLocation()
8.4 开启Crash信息的自动采集
说明:初始化 SDK 时,通过如下配置,即可开启App Crash信息的采集。
SDK 默认关闭 Crash 信息采集,开启采集后,App Crash 时,会触发 AppCrashed 事件,堆栈信息记录在 app_crashed_reason 属性中。
builder.enableTrackAppCrash();
8.5 开启推送点击事件的自动采集
说明:初始化 SDK 时,进行如下配置。
//传入 true 代表开启推送点击事件自动采集
builder.enablePushAutoTrack(boolean enable)
注意:如需设置推送唯一id,请在初始化SDK后调用HinaCloudSDK.getInstance().setPushUId(String pushTypeKey, String pushUId)
8.6 开启App与H5打通功能
说明:初始化 SDK 时,进行如下配置。
builder.enableJSBridge(boolean enable);
注意:需要设置JS开启webView.getSettings().setJavaScriptEnabled(true);
8.7 日志开关
说明:初始化 SDK 时,进行如下配置。
builder.enableLog(boolean enable)
8.8 禁用SDK
说明:初始化 SDK 时,进行如下配置。
builder.disableSDK(boolean disableSDK);
8.9 属性值长度
说明:初始化 SDK 完成后,进行如下配置,可以自定义属性值(string.length)长度,SDK默认限制1024,自定义最大不要超过5120;
HinaCloudSDK.getInstance().setLimitLength(int limitLength)
最后编辑:王建华 更新时间:2024-12-03 14:41