本發(fā)明涉及智能移動終端技術(shù)領(lǐng)域,特別是涉及一種鏈接跳轉(zhuǎn)方法和裝置方法和裝置。
背景技術(shù):
在智能移動終端中,為了方便用戶,開發(fā)了很多APP(application,應(yīng)用),用戶可以通過應(yīng)用訪問H5(HTML5,HyperText Markup Language 5,超文本標(biāo)記語言5)頁面,而很多H5頁面在頁面上會有跳轉(zhuǎn)相應(yīng)網(wǎng)站的按鈕。
在先技術(shù)中,很多APP打開的H5頁面中,其是采用網(wǎng)頁視圖組件webview渲染頁面,但是如果上述按鈕對應(yīng)的鏈接不是以http或者h(yuǎn)ttps開頭的,這樣WebView組件將不能識別這個鏈接,會顯示報錯信息,導(dǎo)致頁面跳轉(zhuǎn)不成功。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問題,本發(fā)明提出了一種鏈接跳轉(zhuǎn)方法和相應(yīng)的裝置,其在頁面訪問組件跳轉(zhuǎn)失敗時,采用系統(tǒng)的第三組件調(diào)用對應(yīng)該網(wǎng)址的第二應(yīng)用訪問相應(yīng)網(wǎng)址,提高跳轉(zhuǎn)成功率。
為了解決上述問題,本發(fā)明公開了一種鏈接跳轉(zhuǎn)方法,包括:
監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
優(yōu)選的,所述如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址步驟,包括:
如果網(wǎng)頁窗口組件訪問的網(wǎng)址出錯,則通過回調(diào)函數(shù)通知第一應(yīng)用出錯的網(wǎng)址。
優(yōu)選的,所述通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址的步驟,包括:
按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用;
如果系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,則通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
優(yōu)選的,所述按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用的步驟,包括:
從多個預(yù)定規(guī)則中,逐個按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用,直至判斷系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,或者完全不存在可打開所述網(wǎng)址的第二應(yīng)用。
優(yōu)選的,所述通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址的步驟,包括:
通過intent組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
優(yōu)選的,所述通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址的步驟,包括:
通過NSURL組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
本發(fā)明還公開了一種鏈接跳轉(zhuǎn)裝置,包括:
監(jiān)控模塊,用于監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
網(wǎng)址獲取模塊,用于如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
調(diào)用模塊,用于通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
優(yōu)選的,所述網(wǎng)址獲取模塊包括:
第一網(wǎng)址獲取模塊,用于如果網(wǎng)頁窗口組件訪問的網(wǎng)址出錯,則通過回調(diào)函數(shù)通知第一應(yīng)用出錯的網(wǎng)址。
優(yōu)選的,所述調(diào)用模塊包括:
判斷子模塊,用于按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用;
第一調(diào)用子模塊,用于如果系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,則通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
優(yōu)選的,所述判斷子模塊包括:
循環(huán)判斷子模塊,用于從多個預(yù)定規(guī)則中,逐個按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用,直至判斷系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,或者完全不存在可打開所述網(wǎng)址的第二應(yīng)用。
優(yōu)選的,所述第一調(diào)用子模塊包括:
Intent調(diào)用子模塊,用于通過intent組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
優(yōu)選的,所述第一調(diào)用子模塊包括:
NSURL調(diào)用子模塊,用于通過NSURL組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
相對于在先技術(shù),本發(fā)明提供的方案,監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯,如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址,可以在webview訪問網(wǎng)址不成功時,采用第三組件調(diào)用可以打開該網(wǎng)址的第二應(yīng)用訪問該網(wǎng)址,從而可以正常打開相應(yīng)網(wǎng)址的頁面。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實(shí)施例的鏈接跳轉(zhuǎn)方法的步驟流程框圖;
圖2示出了根據(jù)本發(fā)明一個實(shí)施例的鏈接跳轉(zhuǎn)方法的步驟流程框圖;
圖3示出了根據(jù)本發(fā)明一個實(shí)施例的鏈接跳轉(zhuǎn)裝置的結(jié)構(gòu)框圖;
圖4示出了根據(jù)本發(fā)明一個實(shí)施例的鏈接跳轉(zhuǎn)裝置的結(jié)構(gòu)框圖;
圖5示出了根據(jù)本發(fā)明一個實(shí)施例的鏈接跳轉(zhuǎn)設(shè)備的結(jié)構(gòu)框圖。
具體實(shí)施方式
在本發(fā)明的說明書和權(quán)利要求書及上述附圖中的描述的一些流程中,包含了按照特定順序出現(xiàn)的多個操作,但是應(yīng)該清楚了解,這些操作可以不按照其在本文中出現(xiàn)的順序來執(zhí)行或并行執(zhí)行,操作的序號如101、102等,僅僅是用于區(qū)分開各個不同的操作,序號本身不代表任何的執(zhí)行順序。另外,這些流程可以包括更多或更少的操作,并且這些操作可以按順序執(zhí)行或并行執(zhí)行。需要說明的是,本文中的“第一”、“第二”等描述,是用于區(qū)分不同的消息、設(shè)備、模塊等,不代表先后順序,也不限定“第一”和“第二”是不同的類型。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
參照圖1,其示出了本發(fā)明實(shí)施例一種鏈接跳轉(zhuǎn)方法的步驟流程框圖,包括:
步驟110,監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
本發(fā)明的第一應(yīng)用可以為非瀏覽器的APP,該第一應(yīng)用采用webview組件展示H5頁面。
在實(shí)際應(yīng)用中,很多在APP中展示的H5頁面提供了各種按鈕,用戶可以點(diǎn)擊相應(yīng)按鈕跳轉(zhuǎn)至相應(yīng)頁面??梢岳斫?,用戶點(diǎn)擊相應(yīng)按鈕,則觸發(fā)點(diǎn)擊該按鈕對應(yīng)的鏈接,從而可以向相應(yīng)的頁面進(jìn)行跳轉(zhuǎn)的過程。
網(wǎng)頁視圖組件:WebView,在安卓系統(tǒng)中的在APP內(nèi)顯示網(wǎng)頁的控件,WebView可以使得網(wǎng)頁輕松的內(nèi)嵌到app里,還可以直接跟js相互調(diào)用。當(dāng)然,在IOS系統(tǒng)(比如蘋果手機(jī)的系統(tǒng))中,也可以使用IOS系統(tǒng)WebView在應(yīng)用內(nèi)訪問網(wǎng)頁。
而在本發(fā)明實(shí)施例中,用戶打開第一應(yīng)用后,在第一應(yīng)用中打開了某個H5頁面,第一應(yīng)用則由webview打開該頁面。當(dāng)該H5頁面中有跳轉(zhuǎn)鏈接的按鈕時,如果用戶點(diǎn)擊該按鈕,則webview重置訪問該鏈接。當(dāng)該鏈接是以http(HTTP-Hypertext transfer protocol,超文本傳送協(xié)議)或者以https(Hypertext Transfer Protocol Secure,超文本傳輸安全協(xié)議)等webView支持的URL格式開頭的鏈接,則webview則對該鏈接會出現(xiàn)訪問錯誤。
比如該按鈕對應(yīng)的鏈接為:
taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id=137339183&point=%7B%22from%22%3A%22h5%22%2C%22url%22%3A%22https%3A%2F%2Fshop137339183.m.taobao.com%2F%22%2C%22h5_uid%22%3A%22s6vmD0PRvTwCAc9R8HLLRCiq%22%2C%22uaPoint%22%3A%22Mozilla%2F5.0%2520(Linux%3B%2520Android%25206.0.1%3B%2520Nexus%25205%2520Build%2FMMB29K%3B%2520wv)%2520AppleWebKit%2F537.36%2520(KHTML%2C%2520like%2520Gecko)%2520Version%2F4.0%2520Chrome%2F44.0.2403.117%2520Mobile%2520Safari%2F537.36%22%7D
那么,對于上述鏈接,其開頭是taobao://,則webview會出現(xiàn)訪問錯誤,其會出現(xiàn)ERR_UNKNOWN_URL_SCHEME的報錯信息,表示其訪問的鏈接為不識別的URL格式。
在本發(fā)明實(shí)施例中,則監(jiān)控webview訪問鏈接時出現(xiàn)的其訪問的鏈接為不識別的URL格式的錯誤。
步驟120,如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
在本發(fā)明實(shí)施例中,可以利用WebView組件在后臺去獲取所述網(wǎng)址的網(wǎng)頁內(nèi)容,而對WebView組件繼續(xù)展示用戶點(diǎn)擊時的網(wǎng)頁。當(dāng)WebView獲取所述網(wǎng)址的網(wǎng)頁內(nèi)容成功,則利用WebView渲染該網(wǎng)頁內(nèi)容,將用戶點(diǎn)擊時的網(wǎng)頁跳轉(zhuǎn)為上述網(wǎng)址對應(yīng)的網(wǎng)頁。當(dāng)WebView獲取所述網(wǎng)址的網(wǎng)頁內(nèi)容失敗時,則利用WebView將對應(yīng)的按鈕顏色改為第一顏色,比如紅色,當(dāng)然,也可以分析該網(wǎng)址對應(yīng)的第二應(yīng)用,然后獲取第二應(yīng)用的logo圖片,將該logo圖片添加在該按鈕中,從而可以提示技術(shù)人員哪里出錯,方便其進(jìn)行修改。另外,本發(fā)明實(shí)施例可以獲取改變了按鈕顏色和/或添加logo圖片后顯示界面圖片進(jìn)行記錄,如此可以在對UI自動化測試過程中,以圖片的方式將跳轉(zhuǎn)出問題的按鈕進(jìn)行記錄,方便技術(shù)人員查找相關(guān)代碼進(jìn)行修改。當(dāng)然,還可以將APP的代碼中該網(wǎng)址的位置打上錯誤標(biāo)記,更方便技術(shù)人員查看和修改。
在本發(fā)明實(shí)施例中,如果監(jiān)控到webview訪問前述鏈接出現(xiàn)錯誤,則獲取上述鏈接,進(jìn)入步驟130。反之,如果webview沒出現(xiàn)前述錯誤,則不進(jìn)行后續(xù)處理。
優(yōu)選的,所述如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址步驟,包括:
如果網(wǎng)頁窗口組件訪問的網(wǎng)址出錯,則通過回調(diào)函數(shù)通知第一應(yīng)用出錯的網(wǎng)址。
在本發(fā)明實(shí)施例中,可以監(jiān)控到webview出現(xiàn)前述錯誤后,可以攔截webview彈出該錯誤,然后利用回調(diào)函數(shù)獲取該鏈接,同時通知第一應(yīng)用的進(jìn)程該出錯的網(wǎng)址。
可以理解,本發(fā)明實(shí)施例可以預(yù)先在webview中設(shè)置一個回調(diào)函數(shù),該回調(diào)函數(shù)在webview出現(xiàn)ERR_UNKNOWN_URL_SCHEME時觸發(fā),其功能包括獲取出錯時的鏈接,并將該鏈接返回給第一應(yīng)用的進(jìn)程。
步驟130,通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
在本發(fā)明實(shí)施例中,上述回調(diào)函數(shù)將上述連接給第一應(yīng)用的進(jìn)程后,第一應(yīng)用的進(jìn)程,通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述上述鏈接,此時則不再使用第一應(yīng)用的webview去訪問該鏈接了,轉(zhuǎn)而使用第二應(yīng)用訪問該鏈接。
優(yōu)選的,所述通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址的步驟,包括:
子步驟131,按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用;
子步驟132,如果系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,則通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
在實(shí)際應(yīng)用中,不同的網(wǎng)站的鏈接,其結(jié)構(gòu)可能不一樣,本發(fā)明則按照相應(yīng)網(wǎng)站的預(yù)定規(guī)則解析該鏈接,然后從中提取預(yù)定位置的關(guān)鍵字,然后根據(jù)該關(guān)鍵字與第二應(yīng)用的對應(yīng)關(guān)系,判斷移動終端的系統(tǒng)中是否存在可以打開該鏈接的第二應(yīng)用。
當(dāng)然,在實(shí)際應(yīng)用中,可以去申請系統(tǒng)的已安裝APP的獲取權(quán)限,然后根據(jù)關(guān)鍵字與第二應(yīng)用名稱的對應(yīng)關(guān)系,從系統(tǒng)的已安裝列表中去查找相應(yīng)的第二應(yīng)用,如果找到,則通過第三組件調(diào)用該第二應(yīng)用,通知其打開該鏈接。
比如前述taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id=137339183&point=%7B%22from%22%3A%22h5%22%2C%22url%22%3A%22https%3A%2F%2Fshop137339183.m.taobao.com%2F%22%2C%22h5_uid%22%3A%22s6vmD0PRvTwCAc9R8HLLRCiq%22%2C%22uaPoint%22%3A%22Mozilla%2F5.0%2520(Linux%3B%2520Android%25206.0.1%3B%2520Nexus%25205%2520Build%2FMMB29K%3B%2520wv)%2520AppleWebKit%2F537.36%2520(KHTML%2C%2520like%2520Gecko)%2520Version%2F4.0%2520Chrome%2F44.0.2403.117%2520Mobile%2520Safari%2F537.36%22%7D,則可以從中提取頭部字段“taobao://”,然后以頭部字段去查找對應(yīng)的第二應(yīng)用名稱,然后去系統(tǒng)中查找是否有安裝相應(yīng)的第二應(yīng)用。
當(dāng)然,如果沒有安裝相應(yīng)的第二應(yīng)用,則可以為將該第二應(yīng)用的下載鏈接提供給用戶,方便用戶下載。在監(jiān)控到用戶下載安裝該第二應(yīng)用后,可以直接調(diào)用該第二用戶打開上述鏈接。
如果沒找到,則可以提示用戶無法打開該鏈接。
優(yōu)選的,所述按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用的步驟,包括:
子步驟133,從多個預(yù)定規(guī)則中,逐個按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用,直至判斷系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,或者完全不存在可打開所述網(wǎng)址的第二應(yīng)用。
在本申請中,可以針對不同的網(wǎng)站的網(wǎng)址設(shè)置預(yù)定規(guī)則,以對出現(xiàn)前述錯誤的鏈接進(jìn)行解析。比如前述以”taobao://”開頭的鏈接,還比如以”tmall://”開頭的鏈接,當(dāng)然,還可能存在其他格式的鏈接,相應(yīng)鏈接有其專門的APP可以打開。不同的網(wǎng)站的鏈接其預(yù)定規(guī)則肯能不同,也可能相同。
那么本申請可以先以一個預(yù)定規(guī)制對鏈接進(jìn)行解析,比如解析鏈接關(guān)鍵字為其頭部字段,然后從第二應(yīng)用名單中以該頭部字段匹配是否有對應(yīng)的第二應(yīng)用名稱,如果匹配上,則說明存在能夠打開該鏈接的第二應(yīng)用。然后以該第二應(yīng)用名稱去系統(tǒng)的安裝列表中查找是否安裝了該應(yīng)用,如果安裝了,則通過第三組件調(diào)用該第二應(yīng)用,通知其打開該鏈接。
如此,當(dāng)按照一個預(yù)定規(guī)則提取關(guān)鍵字,然后在第二應(yīng)用名單中沒找到相應(yīng)第二應(yīng)用名稱時,則可以繼續(xù)按照下一個預(yù)定規(guī)則提取關(guān)鍵字,然后在第二應(yīng)用名單中找相應(yīng)的第二應(yīng)用名稱。直到找到第二應(yīng)用名稱,則進(jìn)入后續(xù)通過第三組件調(diào)用相應(yīng)的第二應(yīng)用打開前述鏈接的過程?;蛘咧钡饺款A(yù)定規(guī)則解析完還沒找到第二應(yīng)用名稱,則可以停止后續(xù)過程,提示用戶錯誤。
優(yōu)選的,所述通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址的步驟,包括:
子步驟A11,通過intent組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
當(dāng)然,對于本步驟,前述的頁面訪問組件則為安卓系統(tǒng)的頁面訪問組件。也可以理解為前述步驟在安卓系統(tǒng)中執(zhí)行。
在本發(fā)明實(shí)施例中,以安卓系統(tǒng)為例,該第三組件可以為intent組件,其可以使用intent組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。該intent組件主要是解決Android應(yīng)用的各項(xiàng)組件之間的通訊,Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。
在本發(fā)明實(shí)施例中,子步驟A11中,首先創(chuàng)建一個Intent()對象;然后調(diào)用intent.setAction函數(shù)向intent注冊調(diào)用第二應(yīng)用的動作;然后通過Uri.parse(url)函數(shù)獲取前述出錯的鏈接;然后調(diào)用intent.setData(content_url)函數(shù)將獲取到的url寫入intent,其中content_url= Uri.parse(url);然后在寫入,那么在寫入前述出錯的鏈接后,調(diào)用startActivity(intent)函數(shù),調(diào)用相應(yīng)第二應(yīng)用,并將前述出錯的鏈接發(fā)送給第二應(yīng)用訪問。其偽代碼如下:
Intent intent= new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri.parse(url);
intent.setData(content_url);
startActivity(intent);
其中,url為前述出錯的鏈接,如“taobao://……”的鏈接。在本發(fā)明實(shí)施例中,可以通過url“taobao://……”中識別出應(yīng)用標(biāo)識的參數(shù),比如“taobao://”識別出淘寶應(yīng)用。其他情況類似。
優(yōu)選的,所述通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址的步驟,包括:
子步驟A12,通過NSURL組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
在本發(fā)明實(shí)施例中,在iOS系統(tǒng)(蘋果系統(tǒng),蘋果手機(jī)、pad使用的系統(tǒng))中,該第三組件可以為NSURL組件。NSURL組件是iOS系統(tǒng)對鏈接進(jìn)行處理的一套組件。
當(dāng)然,對于本步驟,前述的頁面訪問組件則為iOS系統(tǒng)的頁面訪問組件。也可以理解為前述步驟在iOS系統(tǒng)中執(zhí)行。
對于前述需要調(diào)用第二應(yīng)用以打開的鏈接,本發(fā)明實(shí)施例可以先通過NSURL創(chuàng)建NSURLRequest,可以指定緩存規(guī)則和超時時間;然后對于NSURLRequest,通過NSURLRequestrequestWithURL獲取前述出錯的鏈接;然后webViewloadRequest函數(shù),調(diào)用相應(yīng)的第二應(yīng)用打開該鏈接。其偽代碼如下:
NSURLRequest *request =[NSURLRequestrequestWithURL:[NSURL URLWithString:urlStr]];
[webViewloadRequest:request];
其中,urlStr即為前述獲取到的出錯的鏈接。在本發(fā)明實(shí)施例中,可以通過url“taobao://……”中識別出應(yīng)用標(biāo)識的參數(shù),比如“taobao://”識別出淘寶應(yīng)用。其他情況類似。
在本發(fā)明實(shí)施例中,對于監(jiān)控WebView組件訪問網(wǎng)址時是否出錯,可以利用WebView組件在后臺去獲取所述網(wǎng)址的網(wǎng)頁內(nèi)容,而對WebView組件繼續(xù)展示用戶點(diǎn)擊時的網(wǎng)頁。當(dāng)WebView獲取所述網(wǎng)址的網(wǎng)頁內(nèi)容成功,則利用WebView渲染該網(wǎng)頁內(nèi)容,將用戶點(diǎn)擊時的網(wǎng)頁跳轉(zhuǎn)為上述網(wǎng)址對應(yīng)的網(wǎng)頁。當(dāng)WebView獲取所述網(wǎng)址的網(wǎng)頁內(nèi)容失敗時,則利用WebView將對應(yīng)的按鈕顏色改為第一顏色,比如紅色,當(dāng)然,也可以分析該網(wǎng)址對應(yīng)的第二應(yīng)用,然后獲取第二應(yīng)用的logo圖片,將該logo圖片添加在該按鈕中,從而可以對跳轉(zhuǎn)過程進(jìn)行提醒,從而可以提示技術(shù)人員網(wǎng)頁中那個按鈕跳轉(zhuǎn)出錯,方便其進(jìn)行修改。另外,本發(fā)明實(shí)施例可以獲取改變了按鈕顏色和/或添加logo圖片后顯示界面圖片進(jìn)行記錄,如此可以在對UI自動化測試過程中,以圖片的方式將跳轉(zhuǎn)出問題的按鈕進(jìn)行記錄,方便技術(shù)人員查找相關(guān)代碼進(jìn)行修改。當(dāng)然,還可以將APP的代碼中該網(wǎng)址的位置打上錯誤標(biāo)記,更方便技術(shù)人員查看和修改。
本發(fā)明提供的方案,監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯,如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址,可以在webview訪問網(wǎng)址不成功時,采用第三組件調(diào)用可以打開該網(wǎng)址的第二應(yīng)用訪問該網(wǎng)址,從而可以正常打開相應(yīng)網(wǎng)址的頁面。
實(shí)施例二
參照圖2,其示出了本發(fā)明實(shí)施例一種鏈接跳轉(zhuǎn)方法的步驟流程框圖,包括:
步驟210,監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
步驟220,如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
步驟230,從多個預(yù)定規(guī)則中,逐個按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用,直至判斷系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,或者完全不存在可打開所述網(wǎng)址的第二應(yīng)用。
步驟240,如果系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,則通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
本發(fā)明實(shí)施例的步驟與實(shí)施例一類似,在此不在詳述。
本發(fā)明實(shí)施例,可以在webview訪問網(wǎng)址不成功時,采用第三組件調(diào)用可以打開該網(wǎng)址的第二應(yīng)用訪問該網(wǎng)址,從而可以正常打開相應(yīng)網(wǎng)址的頁面。
對于方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作并不一定是本發(fā)明實(shí)施例所必須的。
實(shí)施例三
參照圖3,其示出了本發(fā)明實(shí)施例一種鏈接跳轉(zhuǎn)方法的結(jié)構(gòu)框圖,包括:
監(jiān)控模塊310,用于監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
網(wǎng)址獲取模塊320,用于如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
調(diào)用模塊330,用于通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
優(yōu)選的,所述網(wǎng)址獲取模塊包括:
第一網(wǎng)址獲取模塊,用于如果網(wǎng)頁窗口組件訪問的網(wǎng)址出錯,則通過回調(diào)函數(shù)通知第一應(yīng)用出錯的網(wǎng)址。
優(yōu)選的,所述調(diào)用模塊包括:
判斷子模塊,用于按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用;
第一調(diào)用子模塊,用于如果系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,則通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
優(yōu)選的,所述判斷子模塊包括:
循環(huán)判斷子模塊,用于從多個預(yù)定規(guī)則中,逐個按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用,直至判斷系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,或者完全不存在可打開所述網(wǎng)址的第二應(yīng)用。
優(yōu)選的,所述第一調(diào)用子模塊包括:
Intent調(diào)用子模塊,用于通過intent組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
優(yōu)選的,所述第一調(diào)用子模塊包括:
NSURL調(diào)用子模塊,用于通過NSURL組件調(diào)用第二應(yīng)用,并將所述網(wǎng)址發(fā)送給第二應(yīng)用打開。
本發(fā)明提供的方案,監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯,如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址,可以在webview訪問網(wǎng)址不成功時,采用第三組件調(diào)用可以打開該網(wǎng)址的第二應(yīng)用訪問該網(wǎng)址,從而可以正常打開相應(yīng)網(wǎng)址的頁面。
實(shí)施例四
參照圖4,其示出了本發(fā)明實(shí)施例一種鏈接跳轉(zhuǎn)方法的結(jié)構(gòu)框圖。
監(jiān)控模塊410,用于監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
網(wǎng)址獲取模塊420,用于如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
調(diào)用模塊430,用于通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址;具體包括:
判斷子模塊431,用于按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用;具體包括:循環(huán)判斷子模塊4311,用于從多個預(yù)定規(guī)則中,逐個按照預(yù)定規(guī)則解析所述網(wǎng)址,并判斷系統(tǒng)中是否存在可打開所述網(wǎng)址的第二應(yīng)用,直至判斷系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,或者完全不存在可打開所述網(wǎng)址的第二應(yīng)用。
第一調(diào)用子模塊432,用于如果系統(tǒng)中存在可打開所述網(wǎng)址的第二應(yīng)用,則通過第三組件通知對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
本發(fā)明實(shí)施例可以在webview訪問網(wǎng)址不成功時,采用第三組件調(diào)用可以打開該網(wǎng)址的第二應(yīng)用訪問該網(wǎng)址,從而可以正常打開相應(yīng)網(wǎng)址的頁面。
本發(fā)明實(shí)施例可以在可以保證第二應(yīng)用對自己頁面的訪問不被第一wifi應(yīng)用劫持,使用戶正常瀏覽第二應(yīng)用的頁面的內(nèi)容,不給用戶造成困擾。
本發(fā)明實(shí)施例還提供了一種鏈接跳轉(zhuǎn)設(shè)備,如圖5所示,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請參照本發(fā)明實(shí)施例方法部分。該終端可以為包括手機(jī)、平板電腦、PDA(Personal Digital Assistant,個人數(shù)字助理)、POS(Point of Sales,銷售終端)、車載電腦等任意終端設(shè)備,以終端為手機(jī)為例:
圖5示出的是與本發(fā)明實(shí)施例提供的終端相關(guān)的手機(jī)的部分結(jié)構(gòu)的框圖。參考圖5,手機(jī)包括:射頻(Radio Frequency,RF)電路510、存儲器520、輸入單元530、顯示單元540、傳感器550、音頻電路560、無線保真(wireless fidelity,WiFi)模塊550、處理器580、以及電源590等部件。本領(lǐng)域技術(shù)人員可以理解,圖5中示出的手機(jī)結(jié)構(gòu)并不構(gòu)成對手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結(jié)合圖5對手機(jī)的各個構(gòu)成部件進(jìn)行具體的介紹:
RF電路510可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器580處理;另外,將設(shè)計上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路510包括但不限于天線、至少一個放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器(Low Noise Amplifier,LNA)、雙工器等。此外,RF電路510還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動通訊系統(tǒng) (Global System of Mobile communication,GSM)、通用分組無線服務(wù)(General Packet Radio Service,GPRS)、碼分多址(Code Division Multiple Access,CDMA)、寬帶碼分多址(Wideband Code Division Multiple Access, WCDMA)、長期演進(jìn) (Long Term Evolution,LTE)、電子郵件、短消息服務(wù)(Short Messaging Service,SMS)等。
存儲器520可用于存儲軟件程序以及模塊,處理器580通過運(yùn)行存儲在存儲器520的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器520可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器520可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
輸入單元530可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)的用戶設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,輸入單元530可包括觸控面板531以及其他輸入設(shè)備532。觸控面板531,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板531上或在觸控面板531附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸控面板531可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器580,并能接收處理器580發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板531。除了觸控面板531,輸入單元530還可以包括其他輸入設(shè)備532。具體地,其他輸入設(shè)備532可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元540可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機(jī)的各種菜單。顯示單元540可包括顯示面板541,可選的,可以采用液晶顯示器(Liquid Crystal Display,LCD)、有機(jī)發(fā)光二極管(Organic Light-Emitting Diode, OLED)等形式來配置顯示面板541。進(jìn)一步的,觸控面板531可覆蓋顯示面板541,當(dāng)觸控面板531檢測到在其上或附近的觸摸操作后,傳送給處理器580以確定觸摸事件的類型,隨后處理器580根據(jù)觸摸事件的類型在顯示面板541上提供相應(yīng)的視覺輸出。雖然在圖5中,觸控面板531與顯示面板541是作為兩個獨(dú)立的部件來實(shí)現(xiàn)手機(jī)的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板531與顯示面板541集成而實(shí)現(xiàn)手機(jī)的輸入和輸出功能。
手機(jī)還可包括至少一種傳感器550,比如光傳感器、運(yùn)動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板541的亮度,接近傳感器可在手機(jī)移動到耳邊時,關(guān)閉顯示面板541和/或背光。作為運(yùn)動傳感器的一種,加速計傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計步器、敲擊)等; 至于手機(jī)還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路560、揚(yáng)聲器561,傳聲器562可提供用戶與手機(jī)之間的音頻接口。音頻電路560可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P(yáng)聲器561,由揚(yáng)聲器561轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器562將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路560接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器580處理后,經(jīng)RF電路510以發(fā)送給比如另一手機(jī),或者將音頻數(shù)據(jù)輸出至存儲器520以便進(jìn)一步處理。
WiFi屬于短距離無線傳輸技術(shù),手機(jī)通過WiFi模塊550可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖5示出了WiFi模塊550,但是可以理解的是,其并不屬于手機(jī)的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器580是手機(jī)的控制中心,利用各種接口和線路連接整個手機(jī)的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器520內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器520內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器580可包括一個或多個處理單元;優(yōu)選的,處理器580可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信。可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器580中。
手機(jī)還包括給各個部件供電的電源590(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器580邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。
盡管未示出,手機(jī)還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。
在本發(fā)明實(shí)施例中,該終端所包括的處理器580還具有以下功能:
監(jiān)控第一應(yīng)用通過頁面訪問組件訪問網(wǎng)址時是否出錯;
如果通過頁面訪問組件訪問網(wǎng)址時出錯,則獲取所述網(wǎng)址;
通過第三組件調(diào)用對應(yīng)所述網(wǎng)址的第二應(yīng)用訪問所述網(wǎng)址。
當(dāng)然,處理器還可以執(zhí)行上述其他可以在所在設(shè)備側(cè)的方法的步驟。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器(ROM,Read Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上對本發(fā)明所提供的一種鏈接跳轉(zhuǎn)設(shè)備進(jìn)行了詳細(xì)介紹,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。