qtAnalytics原生外掛程式封裝了QuickTracking APP統計SDK,實現QuickTracking統計功能包括啟動次數、事件、頁面等APP資料的統計。
qtAnalytics 原生外掛程式使用攻略
1.使用之前須從QuickTracking申請帳號並建立應用,擷取 appkey 和收數網域名稱。
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>
欄位描述:
ios_appkey:iOS App的Key。
ios_channel:iOS渠道號。
android_appkey:Android App的Key。
android_channel:Android渠道號。
primaryDomain:收數主網域名稱。
standbyDomain:收數副網域名稱。
原生外掛程式介面
初始化介面
init
參數
參數 | 類型 | 含義 | 預設值 | 備忘 | |
logEnabled | 布爾類型 | 控制【Quick Tracking】LOG的輸出 | false | App正式上線前請關閉SDK運行調試日誌。避免無關Log輸出。 | |
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 關閉、開啟功能時,需要有如下情境使用注意:

範例程式碼
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];
如果不按照上述的邏輯調用,則會使友盟+SDK與QT 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值拼接結果,MCC是3位整數,MNC為兩位整數。例如:46011 |
如果開發人員希望針對上表中的某幾個裝置標識符採集行為做控制,如:不採集IMEI欄位和Serial欄位,自行實現OAID的採集方法。就可以自訂這幾個欄位
注意:
如果不進行自訂,則預設由QuickTracking SDK採集。
請在調用SDK初始化函數之前,先調用setAndroidDeviceInfo設定函數
如果不需要對裝置標識採集行為做控制,就不需要調用
參數
參數 | 類型 |
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的時候才會上報頁面瀏覽事件。
onPageStart和onPageEnd必須成對調用,且傳值的pageName需要保持一致,如果沒有onPageEnd或者onPageEnd與onPageStart傳值的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不支援分享裂變功能