qtAnalytics

qtAnalytics 原生插件概述

qtAnalytics原生插件封装了QuickTracking APP统计SDK,实现QuickTracking统计功能包括启动次数、事件、页面等APP数据的统计。

原生插件使用攻略

1.使用之前须从QuickTracking申请账号并创建应用,获取 appkey 和收数域名。

QuickTracking官网接入流程参考

2.配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:**

  • 名称:qtAnalytics
  • 参数:ios_appkey、ios_channel、android_appkey、android_channel、primaryDomain、standbyDomain
  • 配置示例:
<feature name="qtAnalytics">
  <param name="ios_appkey" value="YOUR_IOS_APP_KEY"/>
  <param name="ios_channel" value="YOUR_IOS_CHANNEL"/>
  <param name="android_appkey" value="YOUR_ANDROID_APP_KEY"/>
  <param name="android_channel" value="YOUR_ANDROID_CHANNEL"/>
  <param name="primaryDomain" value="YOUR_primaryDomain"/>
  <param name="standbyDomain" value="YOUR_standbyDomain"/>
</feature>
  • 字段描述:
    1. ios_appkey:iOS App的Key。
    2. ios_channel:iOS渠道号。
    3. android_appkey:Android App的Key。
    4. android_channel`:Android渠道号。
    5. primaryDomain:收数主域名。
    6. standbyDomain:收数副域名。

原生插件接口

init

原生插件初始化接口

params

logEnabled:

  • 类型:布尔类型
  • 描述:控制【Quick Tracking】LOG的输出。
  • 注意:App正式上线前请关闭SDK运行调试日志。避免无关Log输出。
  • 默认值:false

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true     //布尔类型;SDK是否初始化成功
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:'错误信息'  //字符串类型;错误信息     
}

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.init(
    {logEnabled:true},
    function(ret, err) {
        if (ret.status) {
            api.alert({
                msg: JSON.stringify(ret)
            })
        } else {
            api.alert({
                msg: JSON.stringify(err)
            })
        }
    }
);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

disableSDK

关闭采集

  • 考虑到app端上有隐私策略操作流程控制,因此 sdk 对开启、关闭标识没有额外的缓存状态控制,即如果本次冷启动后关闭SDK功能后希望每次冷启动都是关闭采集的状态,需业务研发主动调用 disableSDK API 功能
  • 由于iOS sdk 应用生命周期内仅能初始化一次,并且初始化场景依赖于网络和服务端通信,因此再调用 SDK 关闭、开启功能时,需要有如下场景使用注意: undefined

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.disableSDK();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enableSDK

开启SDK

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.enableSDK();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resetStorePath

路径设置

需要检查目前是否已经使用了友盟+SDK,如果已经使用,请及时点击查看文档

需要注意,一定更改SDK文件路径:

  • 已经集成了友盟+SDK,现在需要集成QT SDK:在QT和友盟+的所有代码最前面增加(至少早于初始化)
  • 如果不按照上述的逻辑调用,则会使友盟+SDK与QT SDK共同使用一个存储路径,导致日志混乱

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.resetStorePath();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setAndroidDeviceInfo

SDK实现了默认的设备标识符采集,此默认实现类默认会采集如下标识。

设备标识或设备信息 采集方法 备注
AndroidID String getAndroidID(Context context) Android ID
Serial String getSerial() Android手机设备序列号
IMEI String getImei(Context context) IMEI
IMSI String getImsi(Context context) IMSI
WiFiMac String getWifiMac(Context context) WiFiMac
OAID String getOaid(Context context) OAID
GAID String getGaid(Context context) Google广告ID
MCCMNC String getMCCMNC(Context context) MCC:移动国家编码
MNC:移动网号
接口返回值:MCC值和MNC值拼接结果,MCC是3位整数,MNC为两位整数。例如:46011

如果开发者希望针对上表中的某几个设备标识符采集行为做控制,如:不采集IMEI字段和Serial字段,自行实现OAID的采集方法。就可以自定义这几个字段

  • 注意:
    • 如果不进行自定义,则默认由QuickTracking SDK采集。
    • 请在调用SDK初始化函数之前,先调用setAndroidDeviceInfo设置函数
    • 如果不需要对设备标识采集行为做控制,就不需要调用

params

AndroidID:

  • 类型:字符串

Serial:

  • 类型:字符串

IMEI:

  • 类型:字符串

IMSI:

  • 类型:字符串

WiFiMac:

  • 类型:字符串

OAID:

  • 类型:字符串

GAID:

  • 类型:字符串

MCCMNC:

  • 类型:字符串

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.setAndroidDeviceInfo({
    IMEI:null,
    Serial:null,
    OAID:"custom_oaid"
});
qtAnalytics.init(
    {logEnabled:true},
    function(ret, err) {
        if (ret.status) {
            api.alert({
                msg: JSON.stringify(ret)
            })
        } else {
            api.alert({
                msg: JSON.stringify(err)
            })
        }
    }
);

可用性

Android系统

可提供的1.0.0及更高版本

customSetIdfa

自定义设置idfa,不采集可返回@""

params

idfa:

  • 类型:字符串
  • 描述:苹果广告标识
  • 注意:请谨慎决定是否实现对应方法,一旦你选择在自己实现采集方法,此设备标识的采集工作就由你全权接管了,SDK不会再试图采集此设备标识。SDK能采集到的设备标识越少,对统计数据的准确性和稳定性负面影响越大

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.customSetIdfa({
    idfa: ''
});

可用性

iOS系统

可提供的1.0.0及更高版本

customSetIdfv

自定义设置idfv,不采集可返回@""

params

idfv:

  • 类型:字符串
  • 描述:应用级标识
  • 注意:请谨慎决定是否实现对应方法,一旦你选择在自己实现采集方法,此设备标识的采集工作就由你全权接管了,SDK不会再试图采集此设备标识。SDK能采集到的设备标识越少,对统计数据的准确性和稳定性负面影响越大

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.customSetIdfv({
    idfv: ''
});

可用性

iOS系统

可提供的1.0.0及更高版本

customSetOpenUdid

自定义设置openUdid,不采集可返回@""

params

openUdid:

  • 类型:字符串
  • 描述:openUdid
  • 注意:请谨慎决定是否实现对应方法,一旦你选择在自己实现采集方法,此设备标识的采集工作就由你全权接管了,SDK不会再试图采集此设备标识。SDK能采集到的设备标识越少,对统计数据的准确性和稳定性负面影响越大

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.customSetOpenUdid({
    openUdid: ''
});

可用性

iOS系统

可提供的1.0.0及更高版本

customSetUtdid

自定义设置utdid,不采集可返回@""

params

utdid:

  • 类型:字符串
  • 描述:淘宝utdid,若您集成了淘宝utdid SDK,QuickTracking才会采集
  • 注意:请谨慎决定是否实现对应方法,一旦你选择在自己实现采集方法,此设备标识的采集工作就由你全权接管了,SDK不会再试图采集此设备标识。SDK能采集到的设备标识越少,对统计数据的准确性和稳定性负面影响越大

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.customSetUtdid({
    utdid: ''
});

可用性

iOS系统

可提供的1.0.0及更高版本

customSetMcc

自定义设置mcc,不采集可返回@""

params

mcc:

  • 类型:字符串
  • 描述:移动信号国家码
  • 注意:请谨慎决定是否实现对应方法,一旦你选择在自己实现采集方法,此设备标识的采集工作就由你全权接管了,SDK不会再试图采集此设备标识。SDK能采集到的设备标识越少,对统计数据的准确性和稳定性负面影响越大

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.customSetMcc({
    mcc: ''
});

可用性

iOS系统

可提供的1.0.0及更高版本

customSetMnc

自定义设置mnc,不采集可返回@""

params

mnc:

  • 类型:字符串
  • 描述:移动网络号码
  • 注意:请谨慎决定是否实现对应方法,一旦你选择在自己实现采集方法,此设备标识的采集工作就由你全权接管了,SDK不会再试图采集此设备标识。SDK能采集到的设备标识越少,对统计数据的准确性和稳定性负面影响越大

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.customSetMnc({
    mnc: ''
});

可用性

iOS系统

可提供的1.0.0及更高版本

setCustomDeviceId

params

deviceId:

  • 类型:字符串
  • 描述:SDK支持自定义umid,如果要使用自定义umid需要在初始化前(即init前) 设置setCustomDeviceId 接口为有效值(非空)。
  • 注意:
    • 因此功能在未获取umid时生效,本地如果已存在umid,设置后无效。如果本地已获取到umid可以通过卸载重装方式验证此功能。

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.setCustomDeviceId({
    deviceId: ''
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getUMIDString

设备ID的获取

示例代码

var qtAnalytics = api.require('qtAnalytics');
var umidStr = qtAnalytics.getUMIDString();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

onProfileSignIn

在统计用户时以设备为标准,如果需要统计应用自身的账号,请使用以下接口:

params

userId:

  • 类型:字符串
  • 描述:用户账号ID,长度小于64字节
  • 注意:账号ID设置后将被存入本地存储,只有卸载App、清空应用数据或者调用下述的登录接口时,账号ID才会失效,否则每一个事件都将携带账号ID。

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onProfileSignIn({userId:"custom_userId"});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

onProfileSignOff

账号登出时需调用此接口,调用之后不再发送账号相关内容

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onProfileSignOff()

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setUserProfile

设置用户属性

在上报用户属性之前,需要先设置userId上报用户账号,否则QuickTracking流量分析对用户属性不会进行关联计算。确认上报用户的账号ID后,上报用户属性示例如下

params

properties:

  • 类型:json 格式

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.setUserProfile({
    properties:{
        sex:"girl", //性别
        age:"8"//年龄
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

registerGlobalProperties

注册一个全局属性

注册全局属性后,后续触发的所有事件都将自动包含这些属性;且这些属性及属性值存入缓存,APP退出后清除。在分析数据时,可根据此属性进行查看和筛选。

params

properties:

  • 类型:json 格式

示例代码

var qtAnalytics = api.require('qtAnalytics');
var param = {properties:{a:"1",b:"2"}};
qtAnalytics.registerGlobalProperties(param);//当前globalproperty为a:1和b:2

var param = {properties:{b:"3",c:"4"}};
qtAnalytics.registerGlobalProperties(param);//当前globalproperty为a:1、b:3和c:4

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unregisterGlobalProperty

删除一个全局属性

params

propertyName:

  • 类型:字符串
  • 描述:只支持大小写字母、数字及下划线!

示例代码

var qtAnalytics = api.require('qtAnalytics');
var param = {propertyName:"lnch_Source"};
qtAnalytics.unregisterGlobalProperty(param);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getGlobalProperty

根据Key获取单个全局属性

params

propertyName:

  • 类型:字符串
  • 描述:只支持大小写字母、数字及下划线!

示例代码

var qtAnalytics = api.require('qtAnalytics');
var param = {propertyName:"lnch_Source"};
var gp = qtAnalytics.getGlobalProperty(params);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getGlobalProperties

获取所有全局属性

  • 描述:返回字符串中包含所有全局属性及对应的属性值,以 K-V键值对 形式表示全局属性-属性值。多个键值对间用逗号分割。数据外层是大括号。如:{"id":"SA1375","userName":"Mike","account_type":"vip", "MemberLevel":"Level1"}

示例代码

var qtAnalytics = api.require('qtAnalytics');
var allgp = qtAnalytics.getGlobalProperties();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

clearGlobalProperties

清除所有的全局属性

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.clearGlobalProperties();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

onPageStart

页面手动采集

开发者如果希望对页面路径和页面停留时长进行采集和统计。可以通过调用onPageStart/onPageEnd这组接口进行手动埋点。

注意:

  • onPageStart 是SDK记录页面进入的信息,onPageStart不会上报事件,只有调用onPageEnd的时候才会上报页面浏览事件。
  • onPageStart和onPageEnd必须成对调用,且传值的pageName需要保持一致,如果没有onPageEnd或者onPageEnd与onPageStart传值的pageName不一致,则onPageStart记录的信息不会生效。

params

pageName:

  • 类型:字符串
  • 描述:自定义页面名。

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onPageStart({pageName:"MainScreen"});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

onPageEnd

页面手动采集

params

pageName:

  • 类型:字符串
  • 描述:自定义页面名。

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onPageEnd({pageName:"MainScreen"});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setPageProperty

页面属性上传

支持给当前页面附加自定义属性。

params

pageName:

  • 类型:字符串
  • 描述:自定义页面名。

properties:

  • 类型:json 格式

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onPageStart({pageName:"MainScreen"});
qtAnalytics.setPageProperty({
    pageName:"MainScreen",
    properties:{
        home_param_1:"value11" // 当前页面相关属性设置
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setNextPageProperty

给下一个页面附加自定义属性,必须在下一个页面onPageStart之前调用

params

properties:

  • 类型:json 格式
  • 描述:传给下一个页面业务参数

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.setNextPageProperty({
    properties: {
                nextPageProperty: "secondPageProperty"
            }
        });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

onEventObject

事件埋点

自定义事件可以用于追踪用户行为,记录行为发生的具体细节。

params

eventId:

  • 类型:字符串
  • 描述:为当前统计的事件ID。

pageName:

  • 类型:字符串
  • 描述:事件发生时的页面编码

properties:

  • 类型:json 格式

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onEventObject({
    eventId:"play_music",
    pageName:"MainScreen",
    properties:{
        music_type:"popular", //自定义参数:音乐类型,值:流行
        singer:"JJ", //歌手:(林俊杰)JJ
        song_name:"A_Thousand_Years_Later", //歌名:一千年以后
        song_price:100 //价格:100元
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

onKillProcess

特殊场景

如果开发者调用kill或者exit之类的方法杀死进程,请务必在此之前调用onKillProcess,用来保存统计数据。

示例代码

var qtAnalytics = api.require('qtAnalytics');
qtAnalytics.onKillProcess();

可用性

Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/12/2