本發(fā)明的實(shí)施方式涉及計(jì)算機(jī)軟件領(lǐng)域,更具體地,本發(fā)明的實(shí)施方式涉及一種在混合app中確定用戶操作記錄的方法及裝置。
背景技術(shù):
本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。
在有些場景下需要確定用戶的操作行為,目前主要采用如下幾種方式來采集:
先確定哪些操作是有意義的,是需要埋點(diǎn)的,然后將需要收集的操作行為匯總后交與開發(fā)人員,然后,開發(fā)人員在指定的操作行為的web頁面的代碼處編寫埋點(diǎn)代碼,通過埋點(diǎn)代碼將操作行為數(shù)據(jù)發(fā)送給服務(wù)器,服務(wù)器側(cè)的數(shù)據(jù)分析人員再從上報(bào)的操作行為數(shù)據(jù)中篩選、處理并統(tǒng)計(jì)出結(jié)果。
但是上述方法存在如下缺陷:
1、開發(fā)人員需要根據(jù)埋點(diǎn)需求,手工編寫埋點(diǎn)代碼,因此存在耗時(shí)較長的缺陷;另外,上述方法對(duì)主動(dòng)埋點(diǎn)的事件進(jìn)行上報(bào),沒有主動(dòng)埋點(diǎn)的事件不會(huì)上報(bào),在產(chǎn)品上線后,如果產(chǎn)品、運(yùn)營需要統(tǒng)計(jì)之前沒有的埋點(diǎn)數(shù)據(jù),需要開發(fā)人員添加代碼,重新發(fā)布,從這個(gè)角度來講,也存在耗時(shí)較長的缺陷;
2、用戶在web頁的埋點(diǎn)與在app的埋點(diǎn)無法直接建立聯(lián)系,web頁的埋點(diǎn)與app的埋點(diǎn)是割裂的,無法獲取按時(shí)序發(fā)生的用戶的操作行為。
另一種方法為通過hybridapp的異常反饋方式來實(shí)現(xiàn),具體為,將異常線程的調(diào)用棧信息通過網(wǎng)絡(luò)傳輸給服務(wù)器,服務(wù)器解析這些信息,將其翻譯為程序的函數(shù)調(diào)用關(guān)系。一般情況下,技術(shù)人員可以看到被解析出的異常類型、異常代碼函數(shù),甚至發(fā)生異常的代碼行,技術(shù)人員通過解析這些有限的信息定位問題。
但是,上述方案存在如下缺陷:
1、現(xiàn)有的技術(shù)方案,對(duì)于異常調(diào)用棧信息沒有定位到開發(fā)人員代碼的情況,是難以分析、定位問題的,存在一定的局限性。
2、現(xiàn)有技術(shù)的web頁異常捕獲技術(shù),可以獲得javascript異常線程的調(diào)用棧,并且能提供javascript的函數(shù)調(diào)用關(guān)系。但javascript異常未必會(huì)導(dǎo)致hybridapp崩潰,且相關(guān)的異常信息數(shù)量多,容易掩蓋真正需要解決的問題,因此,存在準(zhǔn)確度較低的缺陷。
技術(shù)實(shí)現(xiàn)要素:
因此,現(xiàn)有技術(shù)的確定用戶操作記錄的行為中存在多個(gè)問題企待解決。
由此,本公開的目的在于至少地解決上述其中一個(gè)問題,以提供良好的用戶體驗(yàn)。
根據(jù)本公開的第一方面,提供了一種在混合app中確定用戶操作記錄的方法,所述混合app包括app應(yīng)用程序和web瀏覽器組件,該方法包括:
所述web瀏覽器組件加載一個(gè)或多個(gè)web頁面;
從所述app應(yīng)用程序中向所述web頁面注入腳本程序;
通過所述腳本程序捕捉所述web頁面內(nèi)的第二操作記錄;以及
將所述app應(yīng)用程序內(nèi)的第一操作記錄與所述第二操作記錄結(jié)合,以確定用戶操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第一操作記錄為通過app埋點(diǎn)所記錄的app應(yīng)用程序操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述腳本程序是在每個(gè)所述web頁面加載完成之后注入到所述web頁面的。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述腳本程序?yàn)閖avascript腳本。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第二操作記錄為通過web埋點(diǎn)所記錄的web頁面操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面操作記錄包括單一web頁面內(nèi)部的web頁面內(nèi)操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面內(nèi)操作記錄包括用戶的操作事件,所述用戶的操作事件包括下列中的一個(gè)或多個(gè):
事件的類型、事件觸發(fā)的時(shí)間、操作所處屏幕的坐標(biāo)、屏幕的寬度、被操作元素的信息。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述被操作元素的信息包括下列中的一個(gè)或多個(gè):
元素的id,元素的class,元素的name,元素的value,元素的src,元素的祖先id,元素的標(biāo)簽名。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,被操作元素的信息通過如下方式捕捉:
在所述元素的根元素上進(jìn)行偵聽,以獲取針對(duì)該根元素下所有元素的事件。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面操作記錄包括web頁面跳轉(zhuǎn)記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面跳轉(zhuǎn)記錄包括下列中的一個(gè)或多個(gè):
不同web頁面之間的web頁面間跳轉(zhuǎn)記錄;以及
同一web頁面內(nèi)的web頁面內(nèi)跳轉(zhuǎn)記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,同一web頁面內(nèi)的跳轉(zhuǎn)記錄是通過監(jiān)控跳轉(zhuǎn)歷史捕捉錨點(diǎn)得來的。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述用戶操作記錄包括操作信息,并且所述方法進(jìn)一步包括:
設(shè)置操作信息隊(duì)列,在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,按照所述操作信息觸發(fā)的時(shí)間順序在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息。
根據(jù)本公開的一個(gè)實(shí)施方式,進(jìn)一步包括:
為所述操作信息隊(duì)列設(shè)置第一長度閾值;
當(dāng)所述操作信息隊(duì)列中存儲(chǔ)的操作信息達(dá)到所述第一長度閾值時(shí),按照存儲(chǔ)時(shí)間順序,將存儲(chǔ)時(shí)間最早的操作信息進(jìn)行丟棄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第一操作記錄包括app操作信息,所述第二操作記錄包括web操作信息,所述app操作信息和所述web操作信息存儲(chǔ)在所述操作信息隊(duì)列中。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述用戶操作記錄進(jìn)一步包括場景信息,并且所述方法進(jìn)一步包括:
設(shè)置場景信息隊(duì)列,在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,按照所述場景信息觸發(fā)的時(shí)間順序在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述方法還包括:
為所述場景信息隊(duì)列設(shè)置第二長度閾值;
當(dāng)所述場景信息隊(duì)列中存儲(chǔ)的場景信息達(dá)到所述第二長度閾值時(shí),按照存儲(chǔ)時(shí)間順序,將存儲(chǔ)時(shí)間最早的場景信息進(jìn)行丟棄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第一操作記錄包括app場景信息,所述第二操作記錄包括web場景信息,所述app場景信息和所述web場景信息存儲(chǔ)在所述場景信息隊(duì)列中。
根據(jù)本公開第二方面,提供一種用于定位混合app中的異常位置的方法,包括:
通過如第一方面,或者第一方面的任意一實(shí)施方式所述的方法中任意一項(xiàng)所述的方法以在所述混合app中確定用戶操作記錄;以及
通過所確定的用戶操作記錄來定位所述混合app的異常位置。
根據(jù)本公開第三方面,提供一種用于還原混合app的操作場景的方法,包括:
通過如第一方面,或者第一方面的任意一實(shí)施方式所述的方法中任意一項(xiàng)所述的方法,以在所述混合app中確定用戶操作記錄;以及
根據(jù)所述用戶操作記錄來還原所述混合app的操作場景。
根據(jù)本公開第四方面,提供一種在混合app中確定用戶操作記錄的設(shè)備,所述混合app包括app應(yīng)用程序和web瀏覽器組件,該設(shè)備包括:
用于使所述web瀏覽器組件加載一個(gè)或多個(gè)web頁面的裝置;
用于從所述app應(yīng)用程序中向所述web頁面注入腳本程序的裝置;
用于通過所述腳本程序捕捉所述web頁面內(nèi)的第二操作記錄的裝置;以及
用于將所述app應(yīng)用程序內(nèi)的第一操作記錄與所述第二操作記錄結(jié)合,以確定用戶操作記錄的裝置。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第一操作記錄為通過app埋點(diǎn)所記錄的app應(yīng)用程序操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述腳本程序是在每個(gè)所述web頁面加載完成之后注入到所述web頁面的。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述腳本程序?yàn)閖avascript腳本。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第二操作記錄為通過web埋點(diǎn)所記錄的web頁面操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面操作記錄包括單一web頁面內(nèi)部的web頁面內(nèi)操作記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面內(nèi)操作記錄包括用戶的操作事件,所述用戶的操作事件包括下列中的一個(gè)或多個(gè):
事件的類型、事件觸發(fā)的時(shí)間、操作所處屏幕的坐標(biāo)、屏幕的寬度、被操作元素的信息。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述被操作元素的信息包括下列中的一個(gè)或多個(gè):
元素的id,元素的class,元素的name,元素的value,元素的src,元素的祖先id,元素的標(biāo)簽名。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,包括用于通過如下方式捕捉被操作元素的信息的裝置:
在所述元素的根元素上進(jìn)行偵聽,以獲取針對(duì)該根元素下所有元素的事件。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面操作記錄包括web頁面跳轉(zhuǎn)記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述web頁面跳轉(zhuǎn)記錄包括下列中的一個(gè)或多個(gè):
不同web頁面之間的web頁面間跳轉(zhuǎn)記錄;以及
同一web頁面內(nèi)的web頁面內(nèi)跳轉(zhuǎn)記錄。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,同一web頁面內(nèi)的跳轉(zhuǎn)記錄是通過監(jiān)控跳轉(zhuǎn)歷史捕捉錨點(diǎn)得來的。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述用戶操作記錄包括操作信息,并且所述裝置進(jìn)一步包括:
用于設(shè)置操作信息隊(duì)列的裝置,及用于在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息的裝置。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,用于在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息的裝置,按照所述操作信息觸發(fā)的時(shí)間順序在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息。
根據(jù)本公開的一個(gè)實(shí)施方式,進(jìn)一步包括:用于為所述操作信息隊(duì)列設(shè)置第一長度閾值的裝置;及
當(dāng)所述操作信息隊(duì)列中存儲(chǔ)的操作信息達(dá)到所述第一長度閾值時(shí),用于按照存儲(chǔ)時(shí)間順序,將存儲(chǔ)時(shí)間最早的操作信息進(jìn)行丟棄的裝置。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第一操作記錄包括app操作信息,所述第二操作記錄包括web操作信息,所述app操作信息和所述web操作信息存儲(chǔ)在所述操作信息隊(duì)列中。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述用戶操作記錄進(jìn)一步包括場景信息,并且所述設(shè)備進(jìn)一步包括:
用于設(shè)置場景信息隊(duì)列的裝置,及用于在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息的裝置。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,用于在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息的裝置,按照所述場景信息觸發(fā)的時(shí)間順序在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述設(shè)備還包括:用于為所述場景信息隊(duì)列設(shè)置第二長度閾值的裝置;及
當(dāng)所述場景信息隊(duì)列中存儲(chǔ)的場景信息達(dá)到所述第二長度閾值時(shí),用于按照存儲(chǔ)時(shí)間順序,將存儲(chǔ)時(shí)間最早的場景信息進(jìn)行丟棄的裝置。
根據(jù)本公開的一個(gè)實(shí)施方式,其中,所述第一操作記錄包括app場景信息,所述第二操作記錄包括web場景信息,所述app場景信息和所述web場景信息存儲(chǔ)在所述場景信息隊(duì)列中。
根據(jù)本公開第五方面,提供一種用戶終端,包括:
一個(gè)或者多個(gè)處理器;
存儲(chǔ)器;
存儲(chǔ)在所述存儲(chǔ)器中的程序,當(dāng)被所述一個(gè)或者多個(gè)處理器執(zhí)行時(shí),所述程序使所述處理器執(zhí)行如上所述的方法。
根據(jù)本公開第六方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有程序,當(dāng)所述程序被處理器執(zhí)行時(shí),使得所述處理器執(zhí)行如上所述的方法。
本公開的實(shí)施方式能夠?qū)崿F(xiàn)以下技術(shù)效果中的至少一種:
該方案不需要人工來埋點(diǎn),也不需要開發(fā)人員多次添加埋點(diǎn)代碼,因此,可以降低耗費(fèi)的時(shí)間,可以將app中的操作行為和web中的操作行為結(jié)合起來,因此,可以獲取用戶按照時(shí)序發(fā)生的操作行為;另一方面,該方案不依賴于異常調(diào)用棧,因此,可以避免依賴異常調(diào)用棧所導(dǎo)致的局限性,此外,不是通過javascript異常來確定hybridapp崩潰的,因此,可以提高獲取的操作行為的準(zhǔn)確度。
需要理解的是,本公開的教導(dǎo)并不需要實(shí)現(xiàn)上面所述的全部有益效果,而是特定的技術(shù)方案可以實(shí)現(xiàn)特定的技術(shù)效果,并且本公開的其他實(shí)施方式還能夠?qū)崿F(xiàn)上面未提到的有益效果。
附圖說明
通過參考附圖閱讀下文的詳細(xì)描述,本發(fā)明示例性實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中:
圖1a示意性地示出了根據(jù)本發(fā)明實(shí)施方式的在混合app中確定用戶操作記錄的方法流程圖;
圖1b示意性地示出了根據(jù)本發(fā)明實(shí)施方式的腳本程序利用dom事件傳遞機(jī)制來獲取第二操作記錄的示意圖;
圖1c示意性地示出了根據(jù)本發(fā)明實(shí)施方式的收集url跳轉(zhuǎn)信息的示意圖;
圖1d示意性地示出了現(xiàn)有技術(shù)中web埋點(diǎn)模塊和app埋點(diǎn)模塊的操作示意圖;
圖1e示意性地示出了本發(fā)明實(shí)施例中app埋點(diǎn)模塊的操作示意圖;
圖2示意性地示出了根據(jù)本發(fā)明實(shí)施方式的在混合app中確定用戶操作記錄的裝置示意圖;
圖3示意性地示出了根據(jù)本發(fā)明實(shí)施方式的用于在混合app中確定用戶操作記錄的裝置示意圖;以及
圖4示意性地示出了根據(jù)本發(fā)明實(shí)施方式的用于在混合app中確定用戶操作記錄的裝置示意圖。
在附圖中,相同或?qū)?yīng)的標(biāo)號(hào)表示相同或?qū)?yīng)的部分。
具體實(shí)施方式
下面將參考若干示例性實(shí)施方式來描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
根據(jù)本發(fā)明的實(shí)施方式,提出了一種在混合app中確定用戶操作記錄的方法及裝置。
在本文中,附圖中的任何元素?cái)?shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。
下面參考本發(fā)明的若干代表性實(shí)施方式,詳細(xì)闡釋本發(fā)明的原理和精神。
下面對(duì)本發(fā)明實(shí)施例中可能用到的技術(shù)術(shù)語進(jìn)行簡單描述:
調(diào)用棧,(callstack)意思是調(diào)用堆棧,調(diào)用堆棧是一個(gè)方法列表,按調(diào)用順序保存所有在運(yùn)行期被調(diào)用的方法。
埋點(diǎn),也叫埋點(diǎn)分析,是app、網(wǎng)站分析的一種常用的數(shù)據(jù)采集方法。在產(chǎn)品、服務(wù)轉(zhuǎn)化關(guān)鍵點(diǎn)植入統(tǒng)計(jì)代碼,追蹤用戶在平臺(tái)多個(gè)界面上的系列行為。
時(shí)間戳(timestamp)是表征時(shí)間的參數(shù),例如其可以是格林威治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)起至現(xiàn)在的總秒數(shù)。
hybridapp,即混合app,是在app中內(nèi)嵌瀏覽器組件,由此將一部分功能改為h5前端來實(shí)現(xiàn)。。
javascript,是一種直譯式腳本語言,同時(shí)也是一種動(dòng)態(tài)類型、弱類型、基于原型的語言,內(nèi)置支持類型。它的解釋器被稱為javascript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言。
發(fā)明概述
本發(fā)明人發(fā)現(xiàn),可以在app中向web頁面注入腳本程序,app可以通過腳本程序自動(dòng)獲取web中的操作行為,由于app本身可以獲取app中的操作行為,因此,app中既能得到web中的操作行為,也可以獲取app中的操作行為,將兩類行為結(jié)合起來,進(jìn)而可以獲取用戶按照時(shí)序執(zhí)行的操作行為,可以避免現(xiàn)有技術(shù)中通過埋點(diǎn)方式獲取用戶的操作行為時(shí),web埋點(diǎn)模塊僅能獲取web中的操作行為,app埋點(diǎn)模塊僅能獲取app中的操作行為,兩類行為是割裂開的,不能有效結(jié)合的缺陷,同時(shí),由于不需要人工參與埋點(diǎn),因此,可以降低耗時(shí)、提高效率。另外,該方案是完全不同于通過hybridapp的異常反饋方式的方案,可以將web中的操作行為和app中的操作行為有效結(jié)合起來,因此,可以避免通過hybridapp的異常反饋方式來實(shí)現(xiàn)確定操作行為所帶來的缺陷。
在介紹了本發(fā)明的基本原理之后,下面具體介紹本發(fā)明的各種非限制性實(shí)施方式。
應(yīng)用場景總覽
例如,hybridapp既包括app本身的功能模塊,也包括web瀏覽器組件,先通過app向web頁面注入腳本程序,通過所述腳本程序捕捉所述web頁面內(nèi)的用戶的操作記錄;由于hybridapp可以獲取app應(yīng)用程序中的操作記錄,因此,hybridapp可以將web頁面內(nèi)的用戶的操作記錄和app應(yīng)用程序中的操作記錄進(jìn)行結(jié)合來確定用戶的操作記錄。
示例性方法
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)描述。
圖1a示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的在混合app中確定用戶操作記錄的交互圖。
如圖1a所示,本發(fā)明提供一種在混合app中確定用戶操作記錄的方法,該方法包括如下操作。
在操作a110,所述web瀏覽器組件加載一個(gè)或多個(gè)web頁面;
以及,在操作a120:從所述app應(yīng)用程序中向所述web頁面注入腳本程序;
接下來,在操作a130:通過所述腳本程序捕捉所述web頁面內(nèi)的第二操作記錄;以及
在操作a140:將所述app應(yīng)用程序內(nèi)的第一操作記錄與所述第二操作記錄結(jié)合,以確定用戶操作記錄。
根據(jù)一個(gè)實(shí)施方式,通過所述腳本程序捕捉所述web頁面內(nèi)的第二操作記錄時(shí),優(yōu)選地,腳本程序利用web頁面中的dom(documentobjectmodel,文檔對(duì)象模型)事件傳遞機(jī)制來獲取第二操作記錄,具體為,當(dāng)用戶發(fā)起操作時(shí),事件在信息捕獲階段從頂級(jí)元素一層層的傳遞給下級(jí)元素,當(dāng)找到事件觸發(fā)的元素(h5標(biāo)簽)時(shí),該事件又會(huì)一層一層冒泡到頂級(jí)元素,因此,如果在所有元素的共同父級(jí)元素上注冊(cè)事件監(jiān)聽,可以獲取所有元素的事件。如圖1b所示,在document這里進(jìn)行監(jiān)聽,便可以獲取所有元素的事件觸發(fā)機(jī)會(huì)。在監(jiān)聽事件的響應(yīng)中利用event對(duì)象,可以獲取到元素和事件本身的相關(guān)信息。
根據(jù)一個(gè)實(shí)施方式,優(yōu)選地,所述第一操作記錄可以為通過app埋點(diǎn)所記錄的app應(yīng)用程序操作記錄??梢岳斫猓脩舨僮髀顸c(diǎn)信息一般是跟蹤用戶操作的埋點(diǎn)信息,例如,用戶基于頁面進(jìn)行相關(guān)按鈕點(diǎn)擊等操作的信息。屏幕埋點(diǎn)信息一般是指反映頁面調(diào)用關(guān)系或頁面展示順序的信息。
根據(jù)一個(gè)實(shí)施方式,優(yōu)選地,所述腳本程序可以在每個(gè)所述web頁面加載完成之后注入到所述web頁面的。也就是說,在web頁面由瀏覽器組件加載完成時(shí),從所述app應(yīng)用程序中向所述web頁面注入腳本程序。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述腳本程序?yàn)閖avascript腳本,當(dāng)然也可以是其他形式,在此不做具體限定。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述第二操作記錄為通過web埋點(diǎn)所記錄的web頁面操作記錄。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述web頁面操作記錄包括單一web頁面內(nèi)部的web頁面內(nèi)操作記錄。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述web頁面內(nèi)操作記錄包括用戶的操作事件,所述用戶的操作事件包括下列中的一個(gè)或多個(gè):
事件的類型、事件觸發(fā)的時(shí)間、操作所處屏幕的坐標(biāo)、屏幕的寬度、被操作元素的信息。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述被操作元素的信息包括下列中的一個(gè)或多個(gè):
元素的id,元素的class,元素的name,元素的value,元素的src,元素的祖先id,元素的標(biāo)簽名。
如下為web頁面操作記錄的示例,其中,e為事件、click代表一種名為點(diǎn)擊的事件、w為屏幕的寬度、x為觸發(fā)事件的橫坐標(biāo)、y為觸發(fā)事件的縱坐標(biāo)、id為元素的id屬性、t為用戶事件發(fā)生的時(shí)間戳、pid為父級(jí)元素的id、pt為父親元素的標(biāo)簽名、c為元素的class、tp為元素的標(biāo)簽名、src為有鏈接屬性標(biāo)簽所指向的鏈接(如img標(biāo)簽的圖片地址、a標(biāo)簽的超鏈地址),如下只是示例,web頁面操作記錄所包括的信息并不限于此。
e_click_t_1487649048387_w_320_x_108_y_313_id_btncard-back_pld_app_pt_div_c_verify-papers_placeholder_1bk07_tp_img_src_https:#i.epay.126.net/m/jr/dist/images/idcard-back.png?38e1a1951efa204a,
e_click_t_1487649045203_w_320_x_160_y_373_pld_app_pt_div_tp-div,
圖1c為上述示例中的web頁面操作記錄中的一條信息的具體解析,在此不再進(jìn)行詳述。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,被操作元素的信息通過如下方式捕捉:
在所述元素的根元素上進(jìn)行偵聽,以獲取針對(duì)該根元素下所有元素的事件。如圖1b所示,在document根元素上進(jìn)行監(jiān)聽,可以獲取針對(duì)該根元素下所有元素的事件。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述web頁面操作記錄包括web頁面跳轉(zhuǎn)記錄。
根據(jù)本發(fā)明的一個(gè)實(shí)施方式,優(yōu)選地,所述web頁面跳轉(zhuǎn)記錄包括下列中的一個(gè)或多個(gè):
不同web頁面之間的web頁面間跳轉(zhuǎn)記錄;以及
同一web頁面內(nèi)的web頁面內(nèi)跳轉(zhuǎn)記錄。
本發(fā)明中,優(yōu)選地,同一web頁面內(nèi)的跳轉(zhuǎn)記錄是通過監(jiān)控跳轉(zhuǎn)歷史捕捉錨點(diǎn)得來的。也就是說,本發(fā)明實(shí)施例中,可以通過從所述app應(yīng)用程序中向所述web頁面注入腳本程序來配合記錄url(uniformresourcelocator,統(tǒng)一資源定位符)的變化,具體為,在每個(gè)web頁面由瀏覽器組件加載完成時(shí),注入該腳本程序,然后就可以實(shí)現(xiàn)自動(dòng)記錄不發(fā)請(qǐng)求的url變化。用該腳本程序的自定義的方法替換了原有history對(duì)象(該history對(duì)象用于記錄用戶訪問的url列表)的replacestate和pushstate方法,以達(dá)到當(dāng)history變化時(shí),記錄url的目的,進(jìn)而可以避免當(dāng)web采用單頁應(yīng)用技術(shù)方案時(shí)無法獲取真實(shí)url變化的問題,同時(shí)配合app捕獲瀏覽器主動(dòng)發(fā)起的url請(qǐng)求事件,從而可以完整記錄瀏覽器頁面以及頁面內(nèi)跳轉(zhuǎn)的路徑。此處在兩個(gè)地方涉及到捕獲,具體為替換或監(jiān)聽原有history對(duì)象的replacestate處和替換或監(jiān)聽原有history對(duì)象的pushstate處。
下圖收集url跳轉(zhuǎn)信息的示例,操作發(fā)生的時(shí)間按照6-5-4-3-2-1-0的方向進(jìn)行,例如,時(shí)序上第0行為最近發(fā)生的操作,第6行代表最早發(fā)生的操作,s表示該記錄代表觸發(fā)了url跳轉(zhuǎn)、t表示url跳轉(zhuǎn)發(fā)生的時(shí)間戳,之后緊接的項(xiàng)目表示跳轉(zhuǎn)的url地址,第6行表示發(fā)生一次url跳轉(zhuǎn)、從第4行到第5行表示發(fā)生url跳轉(zhuǎn),地址與第6行的地址一致,從第3行到第0行表示發(fā)生了幾次頁面內(nèi)的url錨點(diǎn)跳轉(zhuǎn)。該示例為了減少報(bào)文大小,與上次跳轉(zhuǎn)一致的url用same代替。需要說明的是,上述為一種示例,并不限定于此。
0s_t_1487649046403_https://jrapp.dai.163.com/index.html#!verify-papers
1s_t_1487649045403_https://jrapp.dai.163.com/index.html#!verify
2s_t_1487649045001_https://jrapp.dai.163.com/index.html#!promotion
3s_t_1487649043901_https://jrapp.dai.163.com/index.html#!login,
4s_t_1487649043801_same
5s_t_1487649043201_same
6s_t_1487649043001_https://jrapp.dai.163.com/index.html
現(xiàn)有web埋點(diǎn)與app埋點(diǎn)相互隔離,難以相互銜接,因此,難以還原用戶完整的操作序列,為分析、統(tǒng)計(jì)、定位造成了麻煩,如圖1d所示,雖然操作行為是按照“進(jìn)入首頁,進(jìn)入我的tab頁進(jìn)入網(wǎng)易小貸”到“進(jìn)入小貸首頁”到“設(shè)置標(biāo)題欄樣式獲取用戶信息”到“點(diǎn)擊完善訂單進(jìn)入資料認(rèn)證頁”到“設(shè)置標(biāo)題欄樣式”到“點(diǎn)擊證件上傳”到“圖片上傳”的時(shí)序來操作的,但是,app埋點(diǎn)模塊獲取的是“進(jìn)入首頁,進(jìn)入我的tab頁進(jìn)入網(wǎng)易小貸”、“設(shè)置標(biāo)題欄樣式獲取用戶信息”、“設(shè)置標(biāo)題欄樣式”、“圖片上傳”這些操作,web埋點(diǎn)模塊獲取的是“進(jìn)入小貸首頁”、“點(diǎn)擊完善訂單進(jìn)入資料認(rèn)證頁”、“點(diǎn)擊證件上傳”這些操作,并各自分析。也就是說,app埋點(diǎn)模塊獲取的是app里面發(fā)生的操作行為,web埋點(diǎn)模塊獲取的是web里面發(fā)生的操作行為,各自進(jìn)行匯總分析,無法獲取用戶真實(shí)的操作記錄。
圖1e為本發(fā)明中獲取用戶操作的示意圖,無論是app內(nèi)的用戶的操作行為,還是web內(nèi)的用戶的操作行為,app埋點(diǎn)模塊都可以按照時(shí)序獲取,進(jìn)而可將web內(nèi)的用戶的操作行為和app內(nèi)的用戶的操作行為無縫整合,避免由于web埋點(diǎn)模塊獲取的操作行為與app埋點(diǎn)模塊獲取的操作行為相互隔離帶來的問題。
本發(fā)明中,優(yōu)選地,可以將操作信息以某種數(shù)據(jù)結(jié)構(gòu),比如隊(duì)列,按順序存儲(chǔ)起來。當(dāng)app發(fā)生異常崩潰時(shí),隨著異常線程調(diào)用棧信息一起傳送至服務(wù)器,可以讓hybridapp架構(gòu)的app具備還原異常場景的能力。
因此,更進(jìn)一步地,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,其中,所述用戶操作記錄包括操作信息,并且所述方法進(jìn)一步包括:
設(shè)置操作信息隊(duì)列,在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息。
優(yōu)選地,按照所述操作信息觸發(fā)的時(shí)間順序在所述操作信息隊(duì)列中來存儲(chǔ)所述操作信息。
在一種優(yōu)選實(shí)施方式中,為了節(jié)省存儲(chǔ)空間,針對(duì)操作信息隊(duì)列進(jìn)行長度管理。例如,為所述操作信息隊(duì)列設(shè)置第一長度閾值;當(dāng)所述操作信息隊(duì)列中存儲(chǔ)的操作信息達(dá)到所述第一長度閾值時(shí),按照存儲(chǔ)時(shí)間順序,將存儲(chǔ)時(shí)間最早的操作信息進(jìn)行丟棄。操作信息隊(duì)列的長度可以根據(jù)實(shí)際需要指定為任意數(shù)量。當(dāng)進(jìn)入操作信息隊(duì)列的操作信息達(dá)到隊(duì)列長度上限時(shí),將操作隊(duì)列中最早進(jìn)入的操作信息拋棄。由此保證操作信息隊(duì)列僅保存最近發(fā)生的、有限個(gè)數(shù)的、有序的操作信息。
也就是說,可以通過設(shè)置一個(gè)操作信息隊(duì)列來存儲(chǔ)操作信息,操作信息按照加入的順序,依次有序存儲(chǔ)到操作信息隊(duì)列中。例如,提供一個(gè)長度有限的操作信息隊(duì)列。當(dāng)程序啟動(dòng)之后,用于存儲(chǔ)來自程序的操作信息。操作信息按照加入的順序,依次有序的存儲(chǔ)到操作信息隊(duì)列。操作信息包含且不限于用戶操作埋點(diǎn)信息、屏幕埋點(diǎn)信息、技術(shù)設(shè)計(jì)相關(guān)信息、web頁面的url跳轉(zhuǎn)信息、用戶在web頁面中操作事件信息,等等。
優(yōu)選地,所述第一操作記錄包括app操作信息,所述第二操作記錄包括web操作信息,所述app操作信息和所述web操作信息存儲(chǔ)在所述操作信息隊(duì)列中。
操作信息中的某些類型信息,對(duì)于定位異常崩潰有著很重要的作用,比如用戶操作所處的頁面位置、用戶正在進(jìn)行的業(yè)務(wù)等等。為了防止這些重要的操作信息被后面加入的操作信息擠占,被操作信息隊(duì)列丟棄掉。本發(fā)明方法優(yōu)選方式中,還會(huì)額外提供一個(gè)場景信息隊(duì)列,按照類似前述方式單獨(dú)存儲(chǔ)這些重要的操作信息。場景信息隊(duì)列是該發(fā)明方法提供的一個(gè)可選策略。因此,更進(jìn)一步地,所述用戶操作記錄進(jìn)一步包括場景信息,并且所述方法進(jìn)一步包括:
設(shè)置場景信息隊(duì)列,在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息。
優(yōu)選地,按照所述場景信息觸發(fā)的時(shí)間順序在所述場景信息隊(duì)列中存儲(chǔ)所述場景信息。
具體的,可以通過在程序運(yùn)行客戶端設(shè)置一個(gè)場景信息隊(duì)列來存儲(chǔ)這些比較重要的場景信息,場景信息按照加入的順序,依次有序存儲(chǔ)到場景信息隊(duì)列中。例如,提供一個(gè)長度有限的場景信息隊(duì)列。當(dāng)程序啟動(dòng)之后,用于存儲(chǔ)來自程序的場景信息。場景信息按照加入的順序,依次有序的存儲(chǔ)到場景信息隊(duì)列。場景信息一般是指屏幕埋點(diǎn)信息,包含且不限于:用戶操作所處客戶端頁面的位置信息、用戶所處業(yè)務(wù)的業(yè)務(wù)信息、用戶所處web頁面的位置信息,等等。
場景信息是可反映頁面調(diào)用關(guān)系或頁面展示順序的信息。其中,用戶操作所處客戶端頁面的位置信息,顧名思義,是指客戶端在當(dāng)前哪一個(gè)頁面上、即當(dāng)前頁面的位置信息。用戶所處業(yè)務(wù)的業(yè)務(wù)信息,是指用戶正在進(jìn)行的業(yè)務(wù)流程的某個(gè)環(huán)節(jié)或某個(gè)節(jié)點(diǎn)的信息。用戶所處web頁面的位置信息為用戶所處的web頁面的地址信息,包括用戶所處web頁面的頁面本身的地址信息,還可以包括頁面中子位置的地址信息。
在一種優(yōu)選實(shí)施方式中,為了節(jié)省存儲(chǔ)空間,針對(duì)場景信息隊(duì)列進(jìn)行長度管理。例如,為所述場景信息隊(duì)列設(shè)置第二長度閾值;
當(dāng)所述場景信息隊(duì)列中存儲(chǔ)的場景信息達(dá)到所述第二長度閾值時(shí),按照存儲(chǔ)時(shí)間順序,將存儲(chǔ)時(shí)間最早的場景信息進(jìn)行丟棄。優(yōu)選地,場景信息隊(duì)列的長度可以根據(jù)實(shí)際需要指定為任意數(shù)量。當(dāng)進(jìn)入場景信息隊(duì)列的操作信息達(dá)到隊(duì)列長度上限時(shí),將場景信息隊(duì)列中最早進(jìn)入的場景信息拋棄。由此保證場景信息隊(duì)列僅保存最近發(fā)生的、有限個(gè)數(shù)的、有序的場景信息。
優(yōu)選地,所述第一操作記錄包括app場景信息,所述第二操作記錄包括web場景信息,所述app場景信息和所述web場景信息存儲(chǔ)在所述場景信息隊(duì)列中。
如下為操作信息隊(duì)列的一種示例:
*進(jìn)入首頁
*進(jìn)入我的tab頁
*進(jìn)入網(wǎng)易小貸
*進(jìn)入小貸首頁
設(shè)置標(biāo)題欄樣式
獲取用戶信息
點(diǎn)擊完善訂單
*進(jìn)入資料認(rèn)證頁
設(shè)置標(biāo)題欄樣式
點(diǎn)擊證件上傳
圖片上傳
如下為場景信息隊(duì)列的一種示例:
*進(jìn)入首頁
*進(jìn)入我的tab頁
*進(jìn)入網(wǎng)易小貸
*進(jìn)入小貸首頁
*進(jìn)入資料認(rèn)證頁
注:符號(hào)*表示這是一個(gè)頁面埋點(diǎn)操作信息。
本發(fā)明一個(gè)實(shí)施方式中,還提出一種的用于定位混合app中的異常位置的方法:
具體為,根據(jù)前面所描述的方法以在所述混合app中確定用戶操作記錄;以及通過所確定的用戶操作記錄來定位所述混合app的異常位置。
如下所示的是現(xiàn)有技術(shù)中確定操作記錄中的異常位置的方法,時(shí)序上第0行代表最近發(fā)生的操作,20代表最早發(fā)生的操作,從20到0操作發(fā)生的時(shí)間距離當(dāng)前時(shí)間越來越近。在如下所示的示例中,第0行是問題發(fā)生的直接所在,但是沒有提供相關(guān)的定位信息,第1行表示當(dāng)選擇圖片完成時(shí)觸發(fā)了第o行的異常,但是之后第2行到20行都沒有定位到技術(shù)人員所寫的代碼(其中,第19行的nefinance表示技術(shù)人員所寫的代碼庫,主線程一開始都會(huì)存在一個(gè)main的調(diào)用,第一個(gè)nefinance位置對(duì)于解析異常沒有參考價(jià)值。),如果只憑借下面所示的信息,是無法具體定位異常具體發(fā)生的原因。
name=sigsegv
reason=segv_accerr
callstack=
0libsystem_platform.dylib_sigtramp+68
1uikit-[uiimagepickercontroller_imagepickerdidcompletewithinfo%:]
2photolibraryplnotifyimagepickeroflmageavailability+88
3photolibrary0x00000001925617280x1924d8000+562984
4photolibrary0x00000001925615400x1924d8000+562496
5uikit-[uiapplicationsendaction:to:from:forevent:]
6uikit-[uicontrol_sendactionsforevents:withevent:]
7uikit-[uicontroltouchesended:withevent:]
8uikit-[uiwindow_sendtouchesforevent:]
9uikit-[uiwindowsendevent:]
10uikit-[uiapplicationsendevent:]
11uikit_uiapplicationhandleeventfromqueueevent
12uikit_uiapplicationhandleeventqueue
13corefoundation_cfrunloop_is_calling_out_to_a_sourceo_perform_function_
14corefoundation_cfrunloopdosources0
15corefoundation_cfrunlooprun
16corefoundationcfrunlooprunspecific+396
17graphicsservicesgseventrunmodal+168
18uikituiapplicationmain+1488
19nefinance_mainmain.m:35
20libdyld.dylib_start
如下為依據(jù)本發(fā)明中提供的方法來確定異常位置的方法,(注:“same”表示與前一個(gè)url地址相同)。技術(shù)人員對(duì)操作信息隊(duì)列解析后發(fā)現(xiàn),該異常發(fā)生時(shí),用戶先進(jìn)入app首頁(19行),然后點(diǎn)擊tab我的(18行),從我的頁面進(jìn)入小貸首頁(17行)。在webview中(14-16行),然后點(diǎn)擊功能“頭部”(11行),跳轉(zhuǎn)后經(jīng)過幾次重定向到達(dá)“資料認(rèn)證”頁面(6行),其跳轉(zhuǎn)流程是錨點(diǎn)登錄#!login(10行)至錨點(diǎn)#!promotion(8行)至錨點(diǎn)#!verify(6行)。在資料認(rèn)證頁面點(diǎn)擊“證件上傳”(5行),進(jìn)入證件上傳頁面,其錨點(diǎn)為#!verify-papers(3行)。在該頁面點(diǎn)擊上傳身份證正面(1行),這個(gè)時(shí)候前端發(fā)起了hybrid接口調(diào)用,調(diào)用了imageupload接口(0行)。這樣就可以明確定位到該異常發(fā)生在https://jrapp.dai.163.com/index.html#!verify-papers頁面點(diǎn)擊上傳身份證正面時(shí)。這些信息對(duì)于技術(shù)人員還原異常發(fā)生時(shí)的場景起到了很重要的作用。
0webview_commands_imageupload
1
e_click_t_1487649048387_w_320_x_108_y_313_pld_app_pt_div_c_verify-papers_plaoeholder_1bk07_tp_img_src_https://i.epay.126.net/m/jr/dist/images/idcard-back.png?38e1a1951efa204a,
2webview_commands_setnavigationbarstyle
3s_t_1487649046413_https://jrapp.dai.163.com/index.html#!verify-papers,
4webview_commands_setnavigationbarstyle,
5e_click_t_1487649045203_w_320x_160_y_373_pld_app_pt_div_tp_div,
6s_t_1487649045403_https://jrapp.dai.163.com/index.html#!verify,
7webview_commands_setnavigationbarstyle,
8s_t_1487649045001_https://jrapp.dai.163.com/index.html#!promotion,
9webview_commands_setnavigationbarstyle,
10s_t_1487649043901_https://jrapp.dai.163.com/index.html#!login,
11
e_click_t_1487649043207_w_320_x_123_y_61_pld_app_pt_div_c_home_label_losn9_tp_div,
12webview_commands_getuserlnfo,
13webview_commands_setnavigationbarstyle,
14s_t_1487649038001_same,
15s_t_1487649032001_same,
16s_t_1487649030001_https://jrapp.dai.163.com/index.html,
17passet_enterpage_網(wǎng)易小貸,
18pdownbar_enterpage-我的,
19pdownbar_enterpage_首頁
本發(fā)明中還提出一種用于還原混合app的操作場景的方法,包括:通過前面所描述的方法在所述混合app中確定用戶操作記錄;以及
根據(jù)所述用戶操作記錄來還原所述混合app的操作場景。
參閱圖2所示,本發(fā)明實(shí)施例還提出一種在混合app中確定用戶操作記錄的設(shè)備,所述混合app包括app應(yīng)用程序和web瀏覽器組件,該設(shè)備包括:
用于使所述web瀏覽器組件加載一個(gè)或多個(gè)web頁面的裝置200;
用于從所述app應(yīng)用程序中向所述web頁面注入腳本程序的裝置210;
用于通過所述腳本程序捕捉所述web頁面內(nèi)的第二操作記錄的裝置220;以及
用于將所述app應(yīng)用程序內(nèi)的第一操作記錄與所述第二操作記錄結(jié)合,以確定用戶操作記錄的裝置230。
示例性設(shè)備
在介紹了本發(fā)明示例性實(shí)施方式的方法和裝置之后,接下來,介紹根據(jù)本發(fā)明的另一示例性實(shí)施方式的用于在混合app中確定用戶操作記錄的裝置。
所屬技術(shù)領(lǐng)域的技術(shù)人員能夠理解,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。
在一些可能的實(shí)施方式中,本發(fā)明的裝置可以至少包括一個(gè)或多個(gè)處理器、以及至少一個(gè)存儲(chǔ)器。其中,所述存儲(chǔ)器存儲(chǔ)有程序,當(dāng)所述程序被所述處理器執(zhí)行時(shí),使得所述處理器執(zhí)行本說明書中描述各種步驟。
下面參照?qǐng)D3來描述根據(jù)本發(fā)明的這種實(shí)施方式的用于在混合app中確定用戶操作記錄的裝置。圖3顯示的裝置300僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
如圖3所示,用戶終端300以通用計(jì)算設(shè)備的形式表現(xiàn),包括但不限于:至少一個(gè)處理器310、至少一個(gè)存儲(chǔ)器320、連接不同系統(tǒng)組件的總線360。
總線360表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器、外圍總線、圖形加速端口、處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。
存儲(chǔ)器320可以包括易失性存儲(chǔ)器形式的可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(ram)321和/或高速緩存存儲(chǔ)器322,還可以進(jìn)一步包括只讀存儲(chǔ)器(rom)323。
存儲(chǔ)器320還可以包括程序模塊324,這樣的程序模塊324包括但不限于:操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。
用戶終端300還可以與一個(gè)或多個(gè)外部設(shè)備10(例如鍵盤、指向設(shè)備、藍(lán)牙設(shè)備等)通信,也可與一個(gè)或者多個(gè)其他用戶終端進(jìn)行通信。這種通信可以通過輸入/輸出(i/o)接口340進(jìn)行,并在顯示單元330上進(jìn)行顯示。并且,用戶終端300還可以通過網(wǎng)絡(luò)適配器350與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器350通過總線360與用戶終端300中的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,但可以結(jié)合用戶終端300使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、raid系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
示例性程序產(chǎn)品
在一些可能的實(shí)施方式中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當(dāng)所述程序代碼在被處理器執(zhí)行時(shí),所述程序代碼用于使所述處理器執(zhí)行上面描述的方法。
所述程序產(chǎn)品可以采用一個(gè)或多個(gè)可讀介質(zhì)的任意組合。可讀介質(zhì)可以是可讀信號(hào)介質(zhì)或者可讀存儲(chǔ)介質(zhì)。可讀存儲(chǔ)介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式盤、硬盤、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、可擦式可編程只讀存儲(chǔ)器(eprom或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(cd-rom)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。
如圖4所示,描述了根據(jù)本發(fā)明的實(shí)施方式的程序產(chǎn)品400,其可以采用便攜式緊湊盤只讀存儲(chǔ)器(cd-rom)并包括程序代碼,并可以在終端設(shè)備,例如個(gè)人電腦上運(yùn)行。然而,本發(fā)明的程序產(chǎn)品不限于此,在本文件中,可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
可以以一種或多種程序設(shè)計(jì)語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言—諸如java、c++等,還包括常規(guī)的過程式程序設(shè)計(jì)語言—諸如“c”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算設(shè)備上執(zhí)行、部分地在用戶設(shè)備上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算設(shè)備上部分在遠(yuǎn)程計(jì)算設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算設(shè)備的情形中,遠(yuǎn)程計(jì)算設(shè)備可以通過任意種類的網(wǎng)絡(luò)——包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)—連接到用戶計(jì)算設(shè)備,或者,可以連接到外部計(jì)算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
雖然已經(jīng)參考若干具體實(shí)施方式描述了本發(fā)明的精神和原理,但是應(yīng)該理解,本發(fā)明并不限于所公開的具體實(shí)施方式,對(duì)各方面的劃分也不意味著這些方面中的特征不能組合以進(jìn)行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。