本發(fā)明涉及計算機應用技術領域,尤其涉及一種數(shù)據(jù)統(tǒng)計方法及系統(tǒng)。
背景技術:
可通過埋點獲取用戶數(shù)據(jù),對數(shù)據(jù)進行統(tǒng)計,進而分析用戶的喜好,改善應用。在保證移動端流量不會受較大影響的前提下,產品經理們總是希望埋點覆蓋面越廣越好。目前常規(guī)的做法是將埋點代碼封裝成工具類,但凡工程中需要埋點(如點擊事件、頁面跳轉)的地方都插入埋點代碼。如,為了統(tǒng)計某個按鈕控件的點擊次數(shù),在該按鈕對應的執(zhí)行代碼后插入埋點代碼,所述埋點代碼用于統(tǒng)計該按鈕控件的點擊次數(shù)。但是,一旦項目越來越復雜,埋點的代碼散落在程序的各個角落,不利于維護以及復用。
技術實現(xiàn)要素:
本發(fā)明所要解決的技術問題是:提供一種數(shù)據(jù)統(tǒng)計方法及系統(tǒng),實現(xiàn)可復用,低耦合,易維護的數(shù)據(jù)統(tǒng)計方法。
為了解決上述技術問題,本發(fā)明采用的技術方案為:
本發(fā)明提供一種數(shù)據(jù)統(tǒng)計方法,包括步驟:
預設第一點擊方法用于識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用;
將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法;所述系統(tǒng)點擊方法用于調用與所述點擊事件相對應的函數(shù)。
本發(fā)明提供一種數(shù)據(jù)統(tǒng)計系統(tǒng),包括:
預設模塊,用于預設第一點擊方法用于識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用;
替換模塊,用于將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法;所述系統(tǒng)點擊方法用于調用與所述點擊事件相對應的函數(shù)。
上述的數(shù)據(jù)統(tǒng)計方法及系統(tǒng),其有益效果在于:通過將系統(tǒng)點擊方法替換為可識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用的第一點擊方法,實現(xiàn)了可使用通用的方法進行埋點獲取用戶數(shù)據(jù)并對數(shù)據(jù)進行統(tǒng)計,從而實現(xiàn)可復用并且低耦合的數(shù)據(jù)統(tǒng)計方法,從而提高了程序代碼的可維護性。
附圖說明
圖1為本發(fā)明一種數(shù)據(jù)統(tǒng)計方法的流程框圖;
圖2為本發(fā)明一種數(shù)據(jù)統(tǒng)計系統(tǒng)的結構框圖;
標號說明:
1、預設模塊;2、替換模塊;
21、第一獲取模塊;22、第二獲取模塊;23、地址調換模塊。
具體實施方式
為詳細說明本發(fā)明的技術內容、所實現(xiàn)目的及效果,以下結合實施方式并配合附圖予以說明。
本發(fā)明最關鍵的構思在于:通過將系統(tǒng)點擊方法替換為可識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用的第一點擊方法,實現(xiàn)了可使用通用的方法進行埋點獲取用戶數(shù)據(jù)并對數(shù)據(jù)進行統(tǒng)計。
請參照圖1及圖2:
如圖1所示,本發(fā)明提供一種數(shù)據(jù)統(tǒng)計方法,包括步驟:
預設第一點擊方法用于識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用;
將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法;所述系統(tǒng)點擊方法用于調用與所述點擊事件相對應的函數(shù)。
進一步地,所述第一點擊方法包括:
識別方法、執(zhí)行方法和統(tǒng)計方法;
所述識別方法用于識別點擊事件;
所述執(zhí)行方法用于調用并執(zhí)行與點擊事件相對應的函數(shù);
所述統(tǒng)計方法用于統(tǒng)計各個點擊事件的操作次數(shù)。
由上述描述可知,所述第一點擊方法可識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用。
進一步地,將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法具體為:
獲取與系統(tǒng)點擊方法相對應的系統(tǒng)點擊對象;
獲取與第一點擊方法相對應的第一點擊對象;
調換所述系統(tǒng)點擊對象和所述第一點擊對象的地址。
由上述描述可知,將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法可使用戶點擊按鈕控件時觸發(fā)第一點擊方法。
進一步地,所述識別方法具體為:
獲取與按鈕控件對應的方法名;
根據(jù)所述方法名,得到點擊事件所屬模塊名稱;
獲取與按鈕控件對應的標簽;
根據(jù)所述模塊名稱和所述標簽,得到點擊事件對應的功能名稱。
由上述描述可知,通過上述識別方法可識別出點擊事件。
進一步地,所述執(zhí)行方法具體為:
調用與點擊事件相對應的函數(shù);
執(zhí)行所述函數(shù)。
由上述描述可知,通過上述執(zhí)行方法可執(zhí)行與點擊事件相對應的函數(shù)。
進一步地,所述統(tǒng)計方法具體為:
上傳點擊事件對應的ID;
統(tǒng)計所述ID對應的點擊事件的操作次數(shù)。
上述統(tǒng)計所述ID對應的點擊事件的操作次數(shù),有兩種實現(xiàn)方式,
第一實現(xiàn)方式:獲取點擊事件對應的ID;將所述ID對應的總數(shù)加1。
第二實現(xiàn)方式:獲取并存儲點擊事件對應的ID;統(tǒng)計所述ID對應的個數(shù)。
由上述描述可知,通過上述統(tǒng)計方法可統(tǒng)計用戶對按鈕控件的點擊操作次數(shù)。
如圖2所示,本發(fā)明提供一種數(shù)據(jù)統(tǒng)計系統(tǒng),包括:
預設模塊1,用于預設第一點擊方法用于識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用;
替換模塊2,用于將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法;所述系統(tǒng)點擊方法用于調用與所述點擊事件相對應的函數(shù)。
進一步地,所述替換模塊包括:
第一獲取模塊21,用于獲取與系統(tǒng)點擊方法相對應的系統(tǒng)點擊對象;
第二獲取模塊22,用于獲取與第一點擊方法相對應的第一點擊對象;
地址調換模塊23,用于調換所述系統(tǒng)點擊對象和所述第一點擊對象的地址。
由上述描述可知,通過調換第一點擊方法和系統(tǒng)點擊方法的地址,可實現(xiàn)用戶點擊按鈕控件時觸發(fā)執(zhí)行第一點擊方法。
本發(fā)明的實施例一為:
現(xiàn)有技術中用于統(tǒng)計某個按鈕控件的點擊次數(shù)方法為:點擊觸發(fā)系統(tǒng)點擊方法,系統(tǒng)點擊方法用于調用與所述點擊事件相對應的函數(shù);當執(zhí)行完點擊事件相對應的函數(shù)后,對該按鈕控件的點擊操作次數(shù)進行統(tǒng)計。本發(fā)明用于統(tǒng)計某個按鈕控件的點擊次數(shù)方法為:預設第一點擊方法用于識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用;將點擊觸發(fā)的系統(tǒng)點擊方法替換為第一點擊方法;當用戶點擊按鈕控件時,觸發(fā)第一點擊方法,第一點擊方法識別出用戶所點擊的按鈕控件對應的點擊事件,記錄所述點擊事件的名稱并上傳至服務器,服務器統(tǒng)計按鈕控件的點擊次數(shù),第一點擊方法調用與所述點擊事件相對應的函數(shù)。
基于iOS操作系統(tǒng)的實施例為:
重寫按鈕類的load方法,具體為:根據(jù)iOS操作系統(tǒng)的按鈕控件點擊函數(shù)sendAction:to:forEvent,自定義一個點擊函數(shù)swiz_sendAction:to:forEvent,用于識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用,且該函數(shù)的參數(shù)與系統(tǒng)的按鈕控件點擊函數(shù)相同;使用iOS操作系統(tǒng)的函數(shù)class_getInstanceMethod獲得函數(shù)sendAction:to:forEvent和函數(shù)swiz_sendAction:to:forEvent的Method對象methodSend,methodSwizSend;使用iOS操作系統(tǒng)的函數(shù)class_replaceMethod或函數(shù)method_exchangeImplementations對methodSend和methodSwizSend進行函數(shù)調換。
當用戶點擊某個按鈕控件時,觸發(fā)按鈕類的load方法,load方法將系統(tǒng)的按鈕控件點擊函數(shù)與自定義的點擊函數(shù)調換。因此,用戶點擊某個按鈕控件后執(zhí)行的是自定義的點擊函數(shù),執(zhí)行過程具體為:通過iOS操作系統(tǒng)的函數(shù)NSStringFromSelector獲取動作的方法名actionName,得到點擊事件所屬模塊,如,學科工具模塊的actionName是subjectClick,計算器模塊的actionName為calc;獲取iOS操作系統(tǒng)的UIControl的tag字段,得到點擊事件在所述模塊中的具體功能,如,學科工具的子功能植樹工具的tag為0214,摸球功能的tag為0220;識別出點擊事件后,從代碼庫中調取相應的函數(shù)并執(zhí)行;將點擊事件的ID通過http協(xié)議上傳至點擊操作統(tǒng)計系統(tǒng),其中點擊事件的ID是根據(jù)actionName和tag確定的,是和點擊操作統(tǒng)計系統(tǒng)約定好的值;點擊操作統(tǒng)計系統(tǒng)獲取點擊事件的ID,并將所述ID對應的總數(shù)加1,得到當前該按鈕控件的用戶操作次數(shù)。
綜上所述,本發(fā)明提供一種數(shù)據(jù)統(tǒng)計方法及系統(tǒng),通過將系統(tǒng)點擊方法替換為可識別各個點擊事件并調用與點擊事件相對應的函數(shù),記錄所述點擊事件被調用的第一點擊方法,實現(xiàn)了可使用通用的方法進行埋點獲取用戶數(shù)據(jù)并對數(shù)據(jù)進行統(tǒng)計,從而實現(xiàn)可復用并且低耦合的數(shù)據(jù)統(tǒng)計方法,從而提高了程序代碼的可維護性;進一步地,通過獲取按鈕控件對應的方法名和標簽,識別出點擊事件;進一步地,通過獲取并統(tǒng)計點擊事件對應的ID,得到點擊事件的操作次數(shù)。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等同變換,或直接或間接運用在相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內。