UTS SDK

uniapp中,调用QuickTracking统计SDK相关接口,完成统计埋点及数据上报

1.下载插件

QuickTracking UTS插件下载地址

平台兼容性

Android

iOS

适用版本区间:4.4 - 向上兼容

适用版本区间:9 - 向上兼容

引入&配置SDK:

1.1 单击下载插件并导入HBuilderX

image

1.2 勾选需要集成原生插件的项目

image

1.3 插件使用说明

在使用插件前您需要在Quick Tracking平台中获取专属的埋点Appkey收数域名

image

1.4 Android SDK初始化前置操作

SDK需要Applicaiton.onCreate函数中调用预初始化函数QtConfigure.preInit(),预初始化函数不会采集设备信息

需要您修改对应module中的index.uts文件,如图:

image

1.5 鸿蒙Next SDK初始化前置操作

因架构限制需要在应用侧stage中进行SDK的预初始化

需要您修改对应module中的index.uts文件,如图:

image

2.埋点API

2.1 SDK初始化

App.uvue

<script>
    // #ifdef APP
    import * as QtAnalytics from '@/uni_modules/QT-Analytics';
    // #endif
    
    export default {
	data() {
	    return {
		title: 'Hello'
		}
	},
	onLoad() {
	    // #ifdef APP-ANDROID || APP-HARMONY
	    QtAnalytics.init()
	    // #endif
	    // #ifdef APP-IOS
	    QtAnalytics.setCustomDomain('您的收数服务域名', '您的备用收数服务域名');
	    QtAnalytics.initWithAppkey('您应用的appkey', '应用市场');
	    // #endif
	}	
    }
</script>

H5集成方式请参考文档:Web SDK

小程序集成方式请参考文档:小程序SDK

2.2 设置全局属性

1. 注册全局属性接口

/**
 * @description QtAnalytics.registerGlobalProperties(String params)
 * @params 为一级平铺全局参数属性键值对,不支持嵌套,并且iOS端不支持值为 null 和 "" 类型的键
 * @return void
 */
registerGlobalProperties(string params)

示例:

QtAnalytics.registerGlobalProperties(JSON.stringify({
    "param_1":"value_1",
    "param_2":"value_2",
    "param_3":"value_3",
    "param_4":"undefined"
}));

2. 删除某个全局属性接口

/**
@@description 删除某个全局属性接口
@param {key} 全局属性名:字符串类型
@return void
*/
unregisterGlobalProperty(String key)

示例:

 QtAnalytics.unregisterGlobalProperty('a');

3. 获取全部全局属性接口

/**
 * @description 获取全部全局属性接口
 * @return 当前已注册所有全局属性值
 */
getGlobalProperties

示例:

const gp = QtAnalytics.getGlobalProperties();

4. 删除所有全局属性接口

/**
 * @description 删除所有全局属性接口
 * @return void
 */ 
clearGlobalProperties

示例:

QtAnalytics.clearGlobalProperties();

2.3 页面浏览事件

/** 自动页面时长统计, 开始记录某个页面展示时长.
 使用方法:onPageStart和onPageEnd两个函数来完成自动统计,若只调用某一个函数不会生成有效数据。
 在该页面展示时调用onPageStart,当退出该页面时调用onPageEnd
 @param viewName 统计的页面名称
 */
onPageStart(String viewName) //页面开始
onPageEnd(String viewName) //页面结束

请注意:必须配对调用onPageStart()和onPageEnd()两个函数来完成自动统计,若只调用某一个函数不会生成有效数据

示例:

export default {
    onShow() {
        QtAnalytics.onPageStart('当前页面的页面编码');
    }, 
    onHide() {
        QtAnalytics.onPageEnd('当前页面的页面编码');
    },
}

更新页面属性

页面属性设置接口setPageProperty(),支持给当前页面附加自定义属性

/**
 * @pageName 目标页面名,必须和当前页面名一致。如不一致,函数执行无效
 * @pageProperty 需要关联到页面的k-v键值对参数。value 值仅支持 string、number,并且不支持多层嵌套对象
 *
 * @warning 调用说明:必须在onHide之前调用
 */
setPageProperty(String pageName, Object pageProperty)

请注意:请在调用onPageStart之后设置页面属性

示例:

//page.uvue
export default {
    onShow() {
        QtAnalytics.onPageStart('当前页面的页面编码');
        QtAnalytics.setPageProperty('当前页面的页面编码', {
            "pageparam_1":"value_1",
            "pageparam_2":"value_2",
            "pageparam_3":"value_3"
         })
     }, 
     onHide() {
         QtAnalytics.onPageEnd('当前页面的页面编码');
     },
}

2.4 自定义事件

/**
 * @description QtAnalytics.onEventObject(String eventId, String params)
 * @eventId 自定义事件名(字符串类型)
 * @params 一级平铺自定义参数属性键值对,不支持嵌套
 */
onEventObject(String eventId, String params)

示例:

QtAnalytics.onEventObject(
    'test_clk', 
    JSON.stringify({
        "product":"水杯",
        "productColor":"黄色",
        "productId":"003"
    })
);

2.5 用户登录

onProfileSignIn(String puid, String provider = "'') 第二个参数默认为空字符串

QtAnalytics.onProfileSignIn('testUserId', 'testOrganization')

用户登出

QtAnalytics.onProfileSignOff()

设置用户属性

需先调用用户登入功能设置用户 id,再调用设置用户属性API。归属于自定义事件的一种,事件编码需写死为 $$_user_profile

示例:

/**
 * @description QtAnalytics.onEventObject(String eventId, String params)
 * @eventId 需写死为 $$_user_profile
 * @params 一级平铺自定义参数属性键值对,不支持嵌套 
 */

QtAnalytics.onEventObject(
    '$$_user_profile', 
    JSON.stringify({
        "gender":"male",
        "_user_nick":"a_nick",
        "province":"Beijing"
  })
);

2.6 全部API

/**
 * 预初始化SDK(安卓、鸿蒙)
 * @param appKey 应用密钥
 * @param trackDomain 主跟踪域名
 * @param trackDomain2 备用跟踪域名
 */
export function preInit(appKey: string, trackDomain: string, trackDomain2: string) 
/**
 * 初始化QT SDK核心功能(安卓、鸿蒙)
 */
export function init()
/**
 * 初始化QT SDK核心功能(iOS)
 * @param appKey 应用密钥
 * @param channel 应用市场
 */
export function initWithAppkey(appKey : string, channel : string)
/**
 * 设置SDK收数域名(iOS)
 * @param primaryDomain 主收数域名
 * @param standbyDomain 备用收数域名
 */
export function setCustomDomain(primaryDomain : string, standbyDomain : string)
/**
 * 控制QT日志开关状态
 * @param enabled 启用(true)/禁用(false)日志记录
 */
export function setLogEnabled(enabled: boolean) 

/**
 * 注册全局属性配置
 * @param jsonString 包含属性键值对的JSON格式字符串
 */
export function registerGlobalProperties(jsonString: string) 
/**
 * 移除指定全局属性
 * @param key 需要删除的属性唯一标识
 */
export function unregisterGlobalProperty(key: string)

/**
 * 获取指定全局属性值
 * @param key 属性键名
 * @returns 属性值
 */
export function getGlobalProperty(key: string): 

/**
 * 获取所有全局属性
 * @returns 全局属性的JSON字符串表示
 */
export function getGlobalProperties(): string 

/**
 * 清除所有全局属性
 */
export function clearGlobalProperties() 

/**
 * 用户登录事件追踪
 * @param userId 用户身份唯一标识
 * @param provider 登录服务提供商名称(可选)
 */
export function onProfileSignIn(userId: string, provider: string = '')

/**
 * 用户登出事件追踪
 */
export function onProfileSignOff() 

/**
 * 发送自定义埋点事件
 * @param eventId 事件编码
 * @param params 参数,jsonstring
 */
export function onEventObject(eventId: string, params?: string) 

/**
 * 页面埋点 - 进入页面,需要和onPageEnd配合使用
 * @param pageName 页面唯一标识名称
 */
export function onPageStart(pageName: string) 
/**
 * 页面埋点 - 离开页面,需要和onPageStart配合使用
 * @param pageName 页面唯一标识名称
 */
export function onPageEnd(pageName: string) 

/**
 * 启用曝光采集功能
 */
export function enableExposureCollection() 

/**
 * 禁用曝光采集功能
 */
export function disableExposureCollection() 
/**
 * 设置曝光配置参数
 * @param config 曝光配置对象
 */
export function setExposureConfig(config: ExposureConfig) 

/**
 * 添加曝光视图
 * @param view 需要监控的视图组件
 * @param exposureData 曝光数据对象
 */
export function addExposureView(view: View, exposureData: ExposureData)
/**
 * 获取分享参数映射表
 * @returns 分享参数映射表
 */
export function getRefShareParams(): Map<string, string> 
/**
 * 请求分享参数
 * @param url 请求URL地址
 * @param params 请求参数映射表(可选)
 * @param timeout 超时时间,默认30000毫秒
 * @param callback 回调接口(可选)
 */
export function requestShareParams(url: string, params?: Map<String, String>, timeout: number = 30000, callback?: ShareResults) 

/**
 * 禁用页面自动埋点收集
 */
export function disableActivityPageCollection() 

/**
 * 启用或禁用SDK监控功能
 * @param enable 是否启用SDK监控
 */
export function enableSDKMonitor(enable: boolean) 

/**
 * 获取设备唯一标识UMID
 * @returns 设备UMID字符串
 */
export function getUMIDString(): string 

/**
 * 设置页面属性
 * @param pageName 目标页面名,必须和当前页面名一致。如不一致,函数执行无效
 * @param params jsonString 包含属性键值对的JSON格式字符串 并且不支持多层嵌套对象
 *
 * @warning 调用说明:必须在onHide之前调用
 */
export function setPageProperty(pageName: string, params: string) 

3. 运行

  1. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试

  2. 开发完毕后正式云打包

付费原生插件目前不支持离线打包

uni-app x 制作自定义调试基座

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择

4. 隐私、权限声明

1. 本插件需要申请的系统权限列表:

安卓

  • android.permission.ACCESS_NETWORK_STATE

  • android.permission.ACCESS_WIFI_STATE

  • android.permission.INTERNET

iOS

  1. 【Quick Tracking】SDK默认采集idfa标识,用来更准确的分析核对数据。对于应用本身没有获取idfa的情况,建议将应用提交至AppStore时按如下方式配置:(以避免被苹果以“应用不含广告功能,但获取了广告标示符IDFA”的而拒绝其上架)1612266822165-29c8614c-00ce-4dd0-958e-76f02754d244.png

  2. Quick Tracking SDK不主动申请IDFA获取权限,若您的App本身就没有申请IDFA权限,Quick Tracking是不会触发客户端权限申请的弹窗的

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

安卓

QuickTracking Android SDK通过采集唯一设备识别码(如Android ID、Serial (Android手机设备序列号)、IMEI 、IMSI 、OAID、GAID、Mac、MCC(移动国家编码)、MNC(移动网号))对用户进行唯一标识,以便进行诸如用户新增等数据统计。在特殊情况下(如用户使用平板设备或电视盒子时),无法通过唯一设备识别码标识设备,我们会将设备Mac地址作为用户的唯一标识,以便正常提供统计分析服务

iOS

QuickTracking iOS SDK通过采集唯一设备识别码(如IDFA、IDFV、MCC(移动国家编码)、MNC(移动网号)、IP、UTDID)对用户进行唯一标识,以便进行诸如用户新增等数据统计

本产品的发数服务器地址需由开发者指定(私有化部署),参数获取方式为:

appkey:在应用列表中获取

收数域名:在“管理控制台-采集信息”模块中获取

SDK链接:在“管理控制台-采集信息”模块中获取

隐私协议地址

5.埋点验证配置

安卓

manifest.json文件中打开“App常用其他设置”,找到“Android设置”,在“UrlSchemes”中添加:"atm.您的Android应用的appKey",让应用能被指定连接scheme唤起image

iOS

manifest.json文件中打开“iOS App配置”,在“URL Schemes”中添加:"atm.您的iOS应用的appKey",让应用能被指定连接scheme唤起image

小程序及Web端埋点验证请参考文档:埋点验证

6.全埋点功能

支持端

功能

Android

  • 应用启动($$_app_start)

  • 应用退出($$_app_end)

  • 应用激活($$_app_install)

iOS

  • 应用启动($$_app_start)

  • 应用退出($$_app_end)

  • 应用激活($$_app_install)

Web/H5

  • 页面浏览($$_page_start )

  • 页面离开 ($$_page_leave)

  • 热力图点击 ($$_hotpoint)

  • 自动点击自动曝光

  • 任意控件点击自动捕获

微信小程序

  • 应用启动($$_app_start)

  • 应用退出($$_app_end)

  • 页面浏览($$_page_end )

  • 页面触底 ($$_reach_bottom)

  • 下拉刷新 ($$_pull_down_refresh)

  • 分享 ($$_share)

  • 自动点击

  • 自动曝光

支付宝小程序

  • 应用启动($$_app_start)

  • 应用退出($$_app_end)

  • 页面浏览($$_page_end )

  • 页面触底 ($$_reach_bottom)

  • 下拉刷新 ($$_pull_down_refresh)

  • 分享 ($$_share)

  • 自动点击

  • 自动曝光

字节小程序

  • 应用启动($$_app_start)

  • 应用退出($$_app_end)

  • 页面浏览($$_page_end )

  • 页面触底 ($$_reach_bottom)

  • 下拉刷新 ($$_pull_down_refresh)

  • 分享 ($$_share)

  • 自动点击

  • 自动曝光

百度小程序

  • 应用启动($$_app_start)

  • 应用退出($$_app_end)

  • 页面浏览($$_page_end )

  • 页面触底 ($$_reach_bottom)

  • 下拉刷新 ($$_pull_down_refresh)

  • 分享 ($$_share)

  • 自动点击

  • 自动曝光