文档

Java SDK

更新时间:

1 集成Java SDK

手动引入jar包「quickaplus-log-collector-java-sdk-1.0.1-SNAPSHOT.jar」

2 基础配置(必填!)

务必设置appkey、收数域名和鉴权信息

  1. 设置appkey

QtSdkConfig.setAppKey("您的appkey"); 

  1. 设置收数域名

QtSdkConfig.setQlcEndpoint("您的收数域名");

注:域名必须增加尾缀“/server”

  1. 鉴权信息填写

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();		//日志构建完成

  1. 系统属性仅支持下述属性上报,上报时需要填写和下述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 其他配置

  1. 服务配置

配置

类型

是否必填

默认值

说明

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

回调函数

  1. 回调配置

属性

类型

说明

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());
});

  1. 日志唯一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();