YonBuilder SDK

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

qtAnalytics 原生插件使用攻略

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 AppKey。

    2. ios_channel:iOS渠道号。

    3. android_appkey:Android AppKey。

    4. android_channel:Android渠道号。

    5. primaryDomain:收数主域名。

    6. standbyDomain:收数副域名。

原生插件接口

初始化接口

init

参数

参数

类型

含义

默认值

备注

logEnabled

布尔类型

控制【Quick Tracking】LOG的输出

false

App正式上线前请关闭SDK运行调试日志。避免无关Log输出

callback(ret, err)

ret

JSON 对象

{

status:true //布尔类型;SDK是否初始化成功

}

  • 必传参数,需和当前实验值结果类型保持一致。

  • 如参数对应的实验值类型为NUMBER类型,则传入的defaultValue也必须是number类型,同时返回的result实验结果也是number类型

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 关闭、开启功能时,需要有如下场景使用注意:

    image.png

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

开启SDK

enableSDK

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

路径设置

resetStorePath

注意,需要检查目前是否已经使用了友盟+SDK,如果已经使用,请务必设置更改SDK文件路径。

重要

更改SDK文件路径方式:

  • 已经集成了友盟+SDK,现在需要集成QT SDK:在QT和友盟+的所有代码最前面增加(至少早于收数域名)[QTConfigure resetStorePath];

  • 已经集成了QT SDK,现在需要集成友盟+SDK:在QT和友盟+的所有代码最前面(至少早于收数域名)增加[UMConfigure resetStorePath];

如果不按照上述的逻辑调用,则会使友盟+SDKQT SDK共同使用一个存储路径,导致日志混乱。具体逻辑为:先调用的哪个SDK初始化方法,就重新设置另外一个SDK的文件路径,比如先初始化的友盟+SDK,就调用 [QTConfigure resetStorePath];,如果是先初始化的QT SDK,就需要调用[UMConfigure resetStorePath];

请注意:如果您重新设置了QT SDK的路径,用户账号、应用版本等主动设置给SDK的特征信息存储Key值会发生变化,如果您依赖了这些字段做业务处理,请重新设置,我们强烈建议您在初次集成时就进行配置,避免数据损失。

示例代码

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)

广告ID(国内)

GAID

String getGaid(Context context)

Google广告ID

MCCMNC

String getMCCMNC(Context context)

MCC:移动国家编码 MNC:移动网号 接口返回值:MCC值和MNC值拼接结果,MCC3位整数,MNC为两位整数。例如:46011

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

注意:

  1. 如果不进行自定义,则默认由QuickTracking SDK采集。

  2. 请在调用SDK初始化函数之前,先调用setAndroidDeviceInfo设置函数

  3. 如果不需要对设备标识采集行为做控制,就不需要调用

参数

参数

类型

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及更高版本

自定义idfa

customSetIdfa

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

参数

类型

描述

idfa

字符串

苹果广告标识

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

自定义idfv

customSetIdfv

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

参数

类型

描述

idfv

字符串

应用级标识

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

自定义openUdid

customSetOpenUdid

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

参数

类型

描述

openUdid

字符串

openUdid

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

自定义utdid

customSetUtdid

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

参数

类型

描述

utdid

字符串

淘宝utdid,若您集成了淘宝utdid SDK,QuickTracking才会采集

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

自定义mcc

customSetMcc

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

参数

类型

描述

mcc

字符串

移动信号国家码

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

自定义mnc

customSetMnc

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

参数

类型

描述

mnc

字符串

移动网络号码

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

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

自定义设备ID

setCustomDeviceId

参数

类型

描述

deviceId

字符串

SDK支持自定义umid,如果要使用自定义umid需要在初始化前(即init前) 设置setCustomDeviceId 接口为有效值(非空)。

注意:

因此功能在未获取umid时生效,本地如果已存在umid,设置后无效。如果本地已获取到umid可以通过卸载重装方式验证此功能。

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

获取设备ID

getUMIDString

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

登录

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

onProfileSignIn

参数

类型

描述

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及更高版本

设置用户属性

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

setUserProfile

参数

类型

描述

properties

json 格式

用户键值对

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

注册全局属性

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

registerGlobalProperties

参数

类型

描述

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

参数

类型

描述

propertyName

字符串

只支持大小写字母、数字及下划线!

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

根据Key获取单个全局属性

getGlobalProperty

参数

类型

描述

propertyName

字符串

只支持大小写字母、数字及下划线!

示例代码

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

可用性

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/onPageEnd这组接口进行手动埋点。

注意:

  • onPageStart 是SDK记录页面进入的信息,onPageStart不会上报事件,只有调用onPageEnd的时候才会上报页面浏览事件。

  • onPageStartonPageEnd必须成对调用,且传值的pageName需要保持一致,如果没有onPageEnd或者onPageEndonPageStart传值的pageName不一致,则onPageStart记录的信息不会生效。

onPageStart

参数

类型

描述

pageName

字符串

自定义页面名。

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

页面手动采集结束

onPageEnd

参数

类型

描述

pageName

字符串

自定义页面名。

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

页面属性上传

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

setPageProperty

参数

类型

描述

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及更高版本

给下一个页面附加自定义属性

请注意:必须在下一个页面onPageStart之前调用

setNextPageProperty

参数

类型

描述

properties

json 格式

传给下一个页面业务参数。

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

事件埋点

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

onEventObject

参数

类型

描述

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及更高版本

杀进程保护方法

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

onKillProcess

示例代码

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

可用性

Android系统

可提供的1.0.0及更高版本

注意事项

  • 由于YonBuilder平台没有透出openURL接口,因此iOS端暂时无法使用埋点验证功能,您可以使用实时日志验证功能进行测试,获取设备ID的方式请参考:获取设备ID

  • YonBuilder不支持全埋点功能

  • YonBuilder不支持分享裂变功能