1 集成Java SDK
手动引入jar包「quickaplus-log-collector-java-sdk-1.0.1-SNAPSHOT.jar」
2 基础配置(必填!)
务必设置appkey、收数域名和鉴权信息
设置appkey
QtSdkConfig.setAppKey("您的appkey");
设置收数域名
QtSdkConfig.setQlcEndpoint("您的收数域名");
注:域名必须增加尾缀“/server”
鉴权信息填写
QtSdkConfig.setServiceId("您的ServiceID");
QtSdkConfig.setServiceSecret("您的ServiceSecret");
获取位置在「管理控制台--采集信息--服务端埋点信息」中。
3 全局属性设置
// 添加属性
QtGlobalPropertiesConfig.put("a", "1");
QtGlobalPropertiesConfig.put("b", "2");
// 删除属性
QtGlobalPropertiesConfig.remove("a");
// 获取所有属性
QtGlobalPropertiesConfig.getAll();
// 清空属性
QtGlobalPropertiesConfig.clear();
4 埋点上报
QtLog log = new QtLog.Builder()
.eventId("order_success") //事件编码(必填)
.deviceId("dev-001") //设置设备ID(设备ID和账号ID必填一个)
.userId("user-001") //设置账号ID(设备ID和账号ID必填一个)
.pageName("pageName") //设置页面编码(选填)
.customProperty(new HashMap<>()) //设置事件属性(选填)
.systemProperty(new HashMap<>()) //设置系统属性(选填)
.idTracking(new HashMap<>()) //设置系统属性的设备标识
.debugKey("dk-0001") //设置埋点验证标志位(选填),上线时必须删除
.eventTimestamp(System.currentTimeMillis()) //设置客户端时间戳(必填)
.serverTimestamp(System.currentTimeMillis()) //设置服务端时间戳(可选)
.uuid("xxxx") //设置事件日志唯一标识,用于生成log_id(1.0.1版本支持)
.build(); //日志构建完成
系统属性仅支持下述属性上报,上报时需要填写和下述key保持一致,包括大小写!
类别 | 开发者上报字段&QT系统属性字段 | 类型 | 描述 |
应用信息 | channel | String | 应用渠道 |
app_version | String | 应用版本 | |
SDK信息 | sdk_version | String | SDK版本 |
sdk_type | String | SDK类型 | |
系统信息 | os | String | 操作系统 |
os_version | String | 操作系统版本 | |
设备信息 | resolution | String | 屏幕分辨率 |
mac、oaid、openid、unionid、android_id、idfa、serial、imei、idfv | String | 设备标识,需要通过「idTracking(new HashMap<>())」上报,具体见上述demo | |
device_brand | String | 设备品牌 | |
device_model | String | 设备机型 | |
网络及运营商 | access | String | 网络类型 |
access_subtype | String | ||
carrier | String | 运营商 | |
平台及场景信息 | scene | String | 场景值(小程序) |
device_type | String | ||
http_header和ua中提取 | browser | String | 浏览器 |
ip | String | IP地址 |
5 日志发送
日志发送时,调用下述API发送。
QtLogSenderHelper.syncSendLog(log);
6 Demo
package com.alibaba.lingyang.quick.tracking.qlc.java.sdk.model;
import com.alibaba.lingyang.quick.tracking.qlc.java.sdk.config.QtGlobalPropertiesConfig;
import com.alibaba.lingyang.quick.tracking.qlc.java.sdk.config.QtSdkConfig;
import com.alibaba.lingyang.quick.tracking.qlc.java.sdk.sender.QtLogSenderHelper;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
/**
* 测试发送日志
*/
public class TestSendLog {
/**
* 测试
*/
@Test
public void testSend() {
// 配置
QtSdkConfig.setServiceId("您的ServiceId");
QtSdkConfig.setServiceSecret("您的ServiceSecret");
QtSdkConfig.setAppKey("您的appkey");
QtSdkConfig.setQlcEndpoint("您的收数域名");
QtSdkConfig.setOpenLog(true);
QtSdkConfig.setCallback(ctx -> {
System.out.println(ctx.getResponseCode());
System.out.println(ctx.getResponseMessage());
System.out.println(ctx.getSendSuccess());
System.out.println(ctx.getSendData());
System.out.println(ctx.getResponseData());
System.out.println(ctx.getErrors());
});
// 添加属性
QtGlobalPropertiesConfig.put("a", "1");
QtGlobalPropertiesConfig.put("b", "2");
// 删除属性
QtGlobalPropertiesConfig.remove("a");
// 获取所有属性
QtGlobalPropertiesConfig.getAll();
// 清空属性
QtGlobalPropertiesConfig.clear();
Map<String,String> idTracking = new HashMap();
idTracking.put("mac","id1");
idTracking.put("oaid","id2");
idTracking.put("android_id","id3");
// 构造日志对象
QtLog log = new QtLog.Builder()
.eventId("order_success") //事件编码(必填)
.deviceId("dev-001") //设置设备ID(设备ID和账号ID必填一个)
.userId("user-001") //设置账号ID(设备ID和账号ID必填一个)
.pageName("pageName") //设置页面编码(选填)
.customProperty(new HashMap<>()) //设置事件属性(选填)
.systemProperty(new HashMap<>()) //设置系统属性(选填)
.idTracking(new HashMap<>()) //设置系统属性的设备标识
.debugKey("dk-0001") //设置埋点验证标志位(选填),上线时必须删除
.eventTimestamp(System.currentTimeMillis()) //设置客户端时间戳(必填)
.serverTimestamp(System.currentTimeMillis()) //设置服务端时间戳(可选)
// 发送日志
QtLogSenderHelper.syncSendLog(log);
}
}
7 其他配置
服务配置
配置 | 类型 | 是否必填 | 默认值 | 说明 |
serviceId | String | 是 | - | 服务端采集的ak |
serviceSecret | String | 是 | - | 服务端采集的sk |
qlcEndpoint | String | 是 | - | 收数服务地址 |
appKey | String | 是 | - | appkey |
openLog | Boolean | 否 | false | 是否开启日志 |
httpConnectTimeoutMillisecond | Integer | 否 | null | 发送HTTP请求的超时时间(connect) |
httpWriteTimeoutMillisecond | Integer | 否 | null | 发送HTTP请求的超时时间(write) |
httpReadTimeoutMillisecond | Integer | 否 | null | 发送HTTP请求的超时时间(read) |
senderType | QtSenderTypeEnum | 否 | SYNC | 发送类型支持同步发送和异步发送 |
callback | Consumer<QtSendCallbackContext> | 否 | null | 回调函数 |
回调配置
属性 | 类型 | 说明 |
sendSuccess | Boolean | 是否发送成功 |
errors | List<String> | 发送失败的错误信息列表 |
qtLog | QtLog | 发送的QtLog对象 |
responseData | String | 返回数据的内容 |
responseCode | String | 返回数据的code |
responseMessage | String | 返回数据的Message |
sendData | String | http实际发送的数据 |
注册回调函数demo
// 注册回调函数
QtSdkConfig.setCallback(ctx -> {
System.out.println(ctx.getResponseCode());
System.out.println(ctx.getResponseMessage());
System.out.println(ctx.getSendSuccess());
System.out.println(ctx.getSendData());
System.out.println(ctx.getResponseData());
System.out.println(ctx.getErrors());
});
日志唯一id——log_id的生成
默认SDK会为每一个事件日志生成uuid,作为日志唯一id「log_id」的生成因子。如果您希望该「log_id」可以唯一性更加强,可以自己设置uuid。方式如下:
QtLog log = new QtLog.Builder()
.eventId("order_success")
.deviceId("dev-001")
.userId("user-001")
.pageName("pageName")
.customProperty(new HashMap<>())
.systemProperty(new HashMap<>())
.idTracking(new HashMap<>())
.debugKey("dk-0001")//设置埋点验证标志位(选填),上线时必须删除
.eventTimestamp(System.currentTimeMillis())
.uuid("xxxx") //设置事件日志唯一标识,用于生成log_id(1.0.1版本支持)
.build();