本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法及裝置。
背景技術(shù):
現(xiàn)在Windows平臺(tái)可以支持的應(yīng)用程序種類(lèi)非常多,并且技術(shù)非常成熟,但移動(dòng)平臺(tái)支持的應(yīng)用較少,主要原因是支持Windows平臺(tái)的應(yīng)用程序不能直接應(yīng)用到移動(dòng)平臺(tái),且如果將已有Web應(yīng)用移植到移動(dòng)平臺(tái)需要對(duì)已有Web應(yīng)用進(jìn)行很大的修改,耗費(fèi)較多的時(shí)間和精力。例如,在Windows平臺(tái)Web應(yīng)用提供商可以通過(guò)ActiveX技術(shù)(ActiveX是一個(gè)開(kāi)放的集成平臺(tái),為開(kāi)發(fā)人員、用戶和Web生產(chǎn)商提供了一個(gè)快速而簡(jiǎn)便的在Internet和Intranet創(chuàng)建程序集成和內(nèi)容的方法)實(shí)現(xiàn)讀取信息安全設(shè)備信息并更新網(wǎng)頁(yè)的應(yīng)用程序,但現(xiàn)有技術(shù)中并沒(méi)有實(shí)現(xiàn)移動(dòng)平臺(tái)上執(zhí)行同樣操作的應(yīng)用程序。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種在移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法及裝置。
本發(fā)明提供的一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法,包括:
步驟S1、應(yīng)用程序在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)保存的腳本,并顯示網(wǎng)頁(yè);
步驟S2、應(yīng)用程序接收到對(duì)腳本的觸發(fā)信息后產(chǎn)生查找本地函數(shù)請(qǐng)求,并將查找本地函數(shù)請(qǐng)求發(fā)送給系統(tǒng)組件;
具體的,查找本地函數(shù)請(qǐng)求具體包括本地函數(shù)名和函數(shù)參數(shù)。
進(jìn)一步的,腳本包括接口函數(shù)和交互函數(shù);
相應(yīng)的,步驟S2具體包括:應(yīng)用程序接收到對(duì)腳本中的所述接口函數(shù)的觸發(fā)信息,所述接口函數(shù)調(diào)用所述交互函數(shù)產(chǎn)生查找本地函數(shù)請(qǐng)求,并將查找本地函數(shù)請(qǐng)求發(fā)送給系統(tǒng)組件。
步驟S3、系統(tǒng)組件根據(jù)查找本地函數(shù)請(qǐng)求調(diào)用本地函數(shù)生成操作指令,將操作指令發(fā)送給信息安全設(shè)備;并接收信息安全設(shè)備返回的響應(yīng)數(shù)據(jù),將響應(yīng)數(shù)據(jù)中的操作結(jié)果作為本地函數(shù)返回值;
具體的,系統(tǒng)組件從查找本地函數(shù)請(qǐng)求中獲取本地函數(shù)名和函數(shù)參數(shù),根據(jù)本地函數(shù)名和函數(shù)參數(shù)調(diào)用本地函數(shù)。
步驟S4、應(yīng)用程序在網(wǎng)頁(yè)中注入并執(zhí)行獲取本地函數(shù)返回值腳本,獲取本地函數(shù)返回值,根據(jù)本地函數(shù)返回值更新并顯示網(wǎng)頁(yè)。
具體的,應(yīng)用程序中存儲(chǔ)有過(guò)濾網(wǎng)址以及與所述過(guò)濾網(wǎng)址對(duì)應(yīng)腳本。
相應(yīng)的,步驟S1之前還包括:應(yīng)用程序判斷過(guò)濾網(wǎng)址中是否包括網(wǎng)頁(yè)地址,是則在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)腳本,并顯示網(wǎng)頁(yè),否則結(jié)束。
優(yōu)選的,步驟S1之前還包括:應(yīng)用程序判斷網(wǎng)頁(yè)地址是否合法,是則根據(jù)所述網(wǎng)頁(yè)地址生成并加載網(wǎng)絡(luò)請(qǐng)求,當(dāng)網(wǎng)絡(luò)請(qǐng)求加載完成之后執(zhí)行步驟S1;否則結(jié)束。
優(yōu)選的,步驟S1之前還包括:應(yīng)用程序判斷是否有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài),是則執(zhí)行步驟S1,否則與信息安全設(shè)備建立連接,執(zhí)行步驟S1。
優(yōu)選的,步驟S3中接收信息安全設(shè)備返回的響應(yīng)數(shù)據(jù)之后,將響應(yīng)數(shù)據(jù)中的操作結(jié)果作為本地函數(shù)的返回值之前還包括:系統(tǒng)組件根據(jù)響應(yīng)數(shù)據(jù)中的標(biāo)志位判斷信息安全設(shè)備是否成功根據(jù)操作指令完成相應(yīng)操作,是則從響應(yīng)數(shù)據(jù)中獲取操作結(jié)果,將操作結(jié)果作為本地函數(shù)的返回值,否則結(jié)束。
優(yōu)選的,步驟S1之前還包括:應(yīng)用程序進(jìn)行初始化,即從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地保存到應(yīng)用程序中。
進(jìn)一步的,應(yīng)用程序進(jìn)行初始化之前還包括:應(yīng)用程序獲取初始化標(biāo)志位,并根據(jù)初始化標(biāo)志位判斷是否已進(jìn)行初始化,是則執(zhí)行步驟S1;否則應(yīng)用程序從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本存儲(chǔ)到應(yīng)用程序中,并更新初始化標(biāo)志位,執(zhí)行步驟S1。
本實(shí)施例提供一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的裝置,包括:應(yīng)用程序和系統(tǒng)組件;
應(yīng)用程序包括:
第一注入模塊,用于在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)保存的腳本,并顯示網(wǎng)頁(yè);
查找本地函數(shù)請(qǐng)求生成模塊,用于接收到對(duì)第一注入模塊注入的腳本的觸發(fā)信息產(chǎn)生查找本地函數(shù)請(qǐng)求;
具體的,查找本地函數(shù)請(qǐng)求生成模塊生成的查找本地函數(shù)請(qǐng)求具體包括本地函數(shù)名和函數(shù)參數(shù)。
第一發(fā)送模塊,用于將查找本地函數(shù)請(qǐng)求生成模塊生成的查找本地函數(shù)請(qǐng)求發(fā)送給所述系統(tǒng)組件;
第二注入模塊,用于在網(wǎng)頁(yè)中注入獲取本地函數(shù)返回值腳本;
執(zhí)行模塊,用于執(zhí)行所述第二注入模塊注入的獲取本地函數(shù)返回值腳本,獲取本地函數(shù)返回值;
顯示模塊,用于根據(jù)執(zhí)行模塊獲取到的本地函數(shù)返回值更新并顯示網(wǎng)頁(yè)。
所述系統(tǒng)組件包括:
調(diào)用模塊,用于接收應(yīng)用程序發(fā)送的查找本地函數(shù)請(qǐng)求;根據(jù)所述查找本地函數(shù)請(qǐng)求調(diào)用本地函數(shù)生成操作指令;
調(diào)用模塊,具體用于從查找本地函數(shù)請(qǐng)求中獲取本地函數(shù)名和函數(shù)參數(shù),根據(jù)本地函數(shù)名和函數(shù)參數(shù)調(diào)用本地函數(shù)生成操作指令。
第二發(fā)送模塊,用于將所述調(diào)用模塊14生成的操作指令發(fā)送給信息安全設(shè)備;
接收模塊,用于接收信息安全設(shè)備返回的響應(yīng)數(shù)據(jù);
獲取操作結(jié)果模塊,用于將接收模塊接收到的響應(yīng)數(shù)據(jù)中的操作結(jié)果作為本地函數(shù)返回值。
需要說(shuō)明的是,腳本包括接口函數(shù)、交互函數(shù);
查找本地函數(shù)請(qǐng)求生成模塊,具體用于接收對(duì)第一注入模塊注入的腳本中的接口函數(shù)的觸發(fā)信息,接口函數(shù)調(diào)用交互函數(shù)產(chǎn)生查找本地函數(shù)請(qǐng)求。
優(yōu)選的,應(yīng)用程序還包括:
存儲(chǔ)模塊:用于存儲(chǔ)有過(guò)濾網(wǎng)址以及與所述過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本。
第一判斷模塊,用于判斷所述存儲(chǔ)模塊中存儲(chǔ)的過(guò)濾網(wǎng)址中是否包括所述網(wǎng)頁(yè)地址;
第一注入模塊,用于若第一判斷模塊判定過(guò)濾網(wǎng)址中包括所述網(wǎng)頁(yè)地址時(shí)在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)腳本。
優(yōu)選的,應(yīng)用程序還包括:
第二判斷模塊,用于判斷網(wǎng)頁(yè)地址是否合法;
加載模塊,用于若第二判斷模塊判定網(wǎng)頁(yè)地址合法時(shí)生成并加載網(wǎng)絡(luò)請(qǐng)求;
所述第一注入模塊,當(dāng)所述加載模塊加載網(wǎng)絡(luò)請(qǐng)求完成后在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)腳本。
優(yōu)選的,應(yīng)用程序還包括:
第三判斷模塊,用于判斷是否有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài);
第一注入模塊,用于若第三判斷模塊判定有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài)時(shí)在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本;還用于若所述第三判斷模塊判定沒(méi)有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài)時(shí)與所述信息安全設(shè)備建立連接,并在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本。
優(yōu)選的,系統(tǒng)組件還包括:
第四判斷模塊,用于根據(jù)接收模塊接收到的響應(yīng)數(shù)據(jù)中的標(biāo)志位判斷信息安全設(shè)備是否成功根據(jù)操作指令完成相應(yīng)操作;
獲取操作結(jié)果模塊,用于若所述第四判斷模塊判定信息安全設(shè)備成功根據(jù)操作指令完成相應(yīng)操作后從響應(yīng)數(shù)據(jù)中獲取操作結(jié)果,將操作結(jié)果作為本地函數(shù)的返回值。
優(yōu)選的,應(yīng)用程序還包括:
初始化模塊,用于從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地保存到應(yīng)用程序中。
初始化模塊具體包括:
第二判斷子模塊,用于獲取初始化標(biāo)志位,并根據(jù)初始化標(biāo)志位判斷是否已進(jìn)行初始化;
存儲(chǔ)子模塊,用于若第二判斷子模塊判定沒(méi)有初始化時(shí)從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本存儲(chǔ)到應(yīng)用程序中,并更新初始化標(biāo)志位;
第一注入模塊,用于若所述第二判斷子模塊判定已進(jìn)行初始化后在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)保存的腳本,并顯示網(wǎng)頁(yè)。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):
當(dāng)用戶在移動(dòng)平臺(tái)中使用應(yīng)用程序進(jìn)行訪問(wèn)Web應(yīng)用時(shí),應(yīng)用程序加載網(wǎng)頁(yè)的過(guò)程中在網(wǎng)頁(yè)中注入腳本,腳本調(diào)用本地函數(shù)訪問(wèn)信息安全設(shè)備信息,更新網(wǎng)頁(yè)內(nèi)容,實(shí)現(xiàn)將Windows平臺(tái)已有的Web應(yīng)用無(wú)縫的移植到移動(dòng)平臺(tái)。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例1提供的一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法的流程圖;
圖2是本發(fā)明實(shí)施例2提供的一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法的流程圖;
圖3是本發(fā)明實(shí)施例3提供的一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法的流程圖;
圖4是本發(fā)明實(shí)施例4提供的一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的裝置的方框圖。
具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)手段,以下結(jié)合附圖及較佳實(shí)施例,對(duì)依據(jù)發(fā)明提出的一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法。
實(shí)施例1
一種在移動(dòng)平臺(tái)支持已有Web應(yīng)用的方法。如圖1所示,具體包括:
步驟S1、應(yīng)用程序在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)保存的腳本,并顯示網(wǎng)頁(yè);
步驟S2、應(yīng)用程序接收到對(duì)腳本的觸發(fā)信息后產(chǎn)生查找本地函數(shù)請(qǐng)求,并將查找本地函數(shù)請(qǐng)求發(fā)送給系統(tǒng)組件;
具體的,查找本地函數(shù)請(qǐng)求具體包括本地函數(shù)名和函數(shù)參數(shù)。
進(jìn)一步的,腳本包括接口函數(shù)和交互函數(shù);
相應(yīng)的,步驟S2具體包括:應(yīng)用程序接收到對(duì)腳本中的所述接口函數(shù)的觸發(fā)信息,所述接口函數(shù)調(diào)用所述交互函數(shù)產(chǎn)生查找本地函數(shù)請(qǐng)求,并將查找本地函數(shù)請(qǐng)求發(fā)送給系統(tǒng)組件。
步驟S3、系統(tǒng)組件根據(jù)查找本地函數(shù)請(qǐng)求調(diào)用本地函數(shù)生成操作指令,將操作指令發(fā)送給信息安全設(shè)備;并接收信息安全設(shè)備返回的響應(yīng)數(shù)據(jù),將響應(yīng)數(shù)據(jù)中的操作結(jié)果作為本地函數(shù)返回值;
具體的,系統(tǒng)組件從查找本地函數(shù)請(qǐng)求中獲取本地函數(shù)名和函數(shù)參數(shù),根據(jù)本地函數(shù)名和函數(shù)參數(shù)調(diào)用本地函數(shù)。
步驟S4、應(yīng)用程序在網(wǎng)頁(yè)中注入并執(zhí)行獲取本地函數(shù)返回值腳本,獲取本地函數(shù)返回值,根據(jù)本地函數(shù)返回值更新并顯示網(wǎng)頁(yè)。
具體的,應(yīng)用程序中存儲(chǔ)有過(guò)濾網(wǎng)址以及與所述過(guò)濾網(wǎng)址對(duì)應(yīng)腳本。
相應(yīng)的,步驟S1之前還包括:應(yīng)用程序判斷網(wǎng)頁(yè)地址是否合法,是則根據(jù)所述網(wǎng)頁(yè)地址生成并加載網(wǎng)絡(luò)請(qǐng)求,當(dāng)網(wǎng)絡(luò)請(qǐng)求加載完成之后執(zhí)行步驟S1;否則結(jié)束。
優(yōu)選的,步驟S1之前還包括:應(yīng)用程序判斷是否有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài),是則執(zhí)行步驟S1,否則與信息安全設(shè)備建立連接,執(zhí)行步驟S1。
優(yōu)選的,步驟S3中接收信息安全設(shè)備返回的響應(yīng)數(shù)據(jù)之后,將響應(yīng)數(shù)據(jù)中的操作結(jié)果作為本地函數(shù)的返回值之前還包括:系統(tǒng)組件根據(jù)響應(yīng)數(shù)據(jù)中的標(biāo)志位判斷信息安全設(shè)備是否成功根據(jù)操作指令完成相應(yīng)操作,是則從響應(yīng)數(shù)據(jù)中獲取操作結(jié)果,將操作結(jié)果作為本地函數(shù)的返回值,否則結(jié)束。
優(yōu)選的,步驟S1之前還包括:應(yīng)用程序進(jìn)行初始化,即從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地保存到應(yīng)用程序中。
進(jìn)一步的,應(yīng)用程序進(jìn)行初始化之前還包括:應(yīng)用程序獲取初始化標(biāo)志位,并根據(jù)初始化標(biāo)志位判斷是否已進(jìn)行初始化,是則執(zhí)行步驟S1;否則應(yīng)用程序從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本存儲(chǔ)到應(yīng)用程序中,并更新初始化標(biāo)志位,執(zhí)行步驟S1。
實(shí)施例2
本實(shí)施例以Android平臺(tái)中支持已有Web應(yīng)用的方法為例進(jìn)行說(shuō)明。本方法為基于Android平臺(tái)WebView控件,用戶在移動(dòng)設(shè)備上訪問(wèn)已有Web應(yīng)用時(shí),應(yīng)用程序在加載預(yù)設(shè)的過(guò)濾網(wǎng)頁(yè)時(shí)加入對(duì)應(yīng)的腳本,當(dāng)用戶觸發(fā)該腳本時(shí),腳本調(diào)用本地函數(shù)訪問(wèn)信息安全設(shè)備,并保存本地函數(shù)的返回值,應(yīng)用程序注入并執(zhí)行獲取本地函數(shù)返回值腳本,根據(jù)獲取到的本地函數(shù)返回值更新并顯示網(wǎng)頁(yè)。信息安全設(shè)備中包括用戶的個(gè)人信息,如姓名,性別,ID,照片。下面以用戶在移動(dòng)平臺(tái)上訪問(wèn)Web應(yīng)用將信息安全設(shè)備中的用戶名自動(dòng)填入網(wǎng)頁(yè)中的為firstname的文本域中為例進(jìn)行介紹,如圖2所示,包括:
步驟101、應(yīng)用程序初始化。
應(yīng)用程序初始化,即從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地保存到應(yīng)用程序中。
所述腳本具體為JavaScript腳本。
本實(shí)施例中,步驟101之前還包括:
步驟101-1、應(yīng)用程序讀取應(yīng)用配置信息,根據(jù)應(yīng)用配置信息中的初始化標(biāo)志位判斷是否已進(jìn)行初始化,是則執(zhí)行步驟101,否則執(zhí)行步驟101-2;
具體地,應(yīng)用程序啟動(dòng)后,在AppDelegate入口處進(jìn)入以下方法:
(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions在上述方法中,應(yīng)用程序通過(guò)NSUserDefaults類(lèi)的類(lèi)方法standardUserDefaults對(duì)象獲取NSUserDefaults對(duì)象,應(yīng)用程序通過(guò)NSUserDefaults對(duì)象的boolForKey方法獲取應(yīng)用配置信息中初始化標(biāo)志位的布爾值,根據(jù)初始化標(biāo)志位的布爾值判斷應(yīng)用程序是否已進(jìn)行初始化;例如,本實(shí)施例中,初始化標(biāo)志位布爾值為YES則判定應(yīng)用程序已進(jìn)行初始化,初始化標(biāo)志位布爾值為NO則判定應(yīng)用程序未進(jìn)行初始化;
步驟101-2、應(yīng)用程序從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地存儲(chǔ)到應(yīng)用程序的應(yīng)用配置信息中;
具體地,本實(shí)施例中,應(yīng)用程序從獲取應(yīng)用配置信息中獲取與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本;例如,濾網(wǎng)址為http://www.sampleurl.com,相應(yīng)的與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本為:
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionmyFunction(){\document.getElementsByName(\"firstname\")[0].value+=abc();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";
\script.text=functionabc(){\abc2();\returngetabc2Ret();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionabc2(){\variframe=document.createElement(\"IFRAME\");\iframe.setAttribute(\"src\",\"objc://doFunc3\");\document.documentElement.appendChild(iframe);\iframe.parentNode.removeChild(iframe);\iframe=null;\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
本實(shí)施例中,應(yīng)用程序通過(guò)NSUserDefault對(duì)象的setObject:forKey方法以轉(zhuǎn)換得到的NSString類(lèi)型的過(guò)濾網(wǎng)址為鍵,以轉(zhuǎn)換得到的NSString類(lèi)型的腳本為值,調(diào)用NSUserDefault對(duì)象的synchronize方法將NSString類(lèi)型的過(guò)濾網(wǎng)址和腳本存儲(chǔ)到應(yīng)用配置信息中;
步驟102、應(yīng)用程序顯示用戶界面,接收用戶輸入的網(wǎng)頁(yè)地址;
步驟103、應(yīng)用程序根據(jù)用戶輸入的網(wǎng)頁(yè)地址生成網(wǎng)絡(luò)請(qǐng)求;
具體地,本實(shí)施例中,應(yīng)用程序接收用戶輸入的網(wǎng)頁(yè)地址,根據(jù)該網(wǎng)頁(yè)地址產(chǎn)生CustomWebView對(duì)象,根據(jù)該對(duì)象生成網(wǎng)絡(luò)請(qǐng)求;
步驟104、應(yīng)用程序判斷該網(wǎng)頁(yè)地址是否合法,是則根據(jù)網(wǎng)頁(yè)請(qǐng)求生成并加載網(wǎng)絡(luò)請(qǐng)求,執(zhí)行步驟105,否則提示網(wǎng)頁(yè)地址無(wú)效,返回步驟102;
具體地,本實(shí)施例中,該網(wǎng)絡(luò)請(qǐng)求為一個(gè)CustomWebView對(duì)象,應(yīng)用程序調(diào)用CustomWebView控件的loadUrl方法加載該網(wǎng)絡(luò)請(qǐng)求;CustomWebView控件為Android平臺(tái)的系統(tǒng)控件,用于顯示網(wǎng)頁(yè)內(nèi)容;
具體地,本實(shí)施例中,該步驟包括:
步驟104-1、應(yīng)用程序在loadUrl方法中根據(jù)CustomWebView對(duì)象中的網(wǎng)頁(yè)地址成員變量判斷該網(wǎng)頁(yè)地址是否合法,設(shè)置該方法的返回值。
本實(shí)施例中,應(yīng)用程序根據(jù)RFC1738Uniform Resource Locators(URL)標(biāo)準(zhǔn)判斷網(wǎng)頁(yè)地址的合法性;例如,若該網(wǎng)頁(yè)地址為http://www.sampleurl.com,則該網(wǎng)頁(yè)地址合法,設(shè)置該方法的返回值為YES,若該網(wǎng)頁(yè)地址為htps://error.com,則該網(wǎng)頁(yè)地址不合法,設(shè)置該方法的返回值為NO;
步驟104-2、應(yīng)用程序判斷該方法的返回值是否為預(yù)設(shè)值,是則繼續(xù)加載網(wǎng)絡(luò)請(qǐng)求,執(zhí)行步驟105,否則提示網(wǎng)頁(yè)地址無(wú)效,返回步驟102;
本實(shí)施例中,應(yīng)用程序判斷該方法的返回值是否為YES,是則繼續(xù)加載網(wǎng)絡(luò)請(qǐng)求,執(zhí)行步驟105,否則提示網(wǎng)頁(yè)地址無(wú)效,返回步驟102;
步驟105、應(yīng)用程序判斷預(yù)存的過(guò)濾網(wǎng)址中是否包括該網(wǎng)頁(yè)地址,是則執(zhí)行步驟106,否則結(jié)束;
具體地,系統(tǒng)在加載完網(wǎng)絡(luò)請(qǐng)求后,在CustomWebView對(duì)象結(jié)束處進(jìn)入-notifyPageFinished方法,在該方法中應(yīng)用程序檢查應(yīng)用程序配置信息的過(guò)濾網(wǎng)址是否包括該網(wǎng)頁(yè)地址,是則執(zhí)行步驟106,否則結(jié)束;
步驟106、應(yīng)用程序判斷是否有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài),是則執(zhí)行步驟107,否則與信息安全設(shè)備建立連接,執(zhí)行步驟107;
若信息安全設(shè)備具體為藍(lán)牙key,相應(yīng)的,步驟106具體包括,
步驟106-1、應(yīng)用程序獲取已配對(duì)的信息安全設(shè)備的設(shè)備信息列表;
具體的,應(yīng)用程序調(diào)用系統(tǒng)API getDefaultAdapter,獲取設(shè)備上默認(rèn)的藍(lán)牙適配器BluetoothAdapter對(duì)象m_DefaultAdapter。調(diào)用藍(lán)牙適配器m_DefaultAdapter的成員函數(shù)getBondedDevices得到已配對(duì)的第一設(shè)備信息列表L1。
本實(shí)施例中,設(shè)備信息列表具體為設(shè)備名稱列表。
步驟106-2、應(yīng)用程序從設(shè)備信息列表中獲取滿足預(yù)設(shè)條件的設(shè)備信息作當(dāng)前設(shè)備信息;
具體的,應(yīng)用程序?qū)Φ谝辉O(shè)備信息列表L1中所有的設(shè)備名稱進(jìn)行判斷,若以FT_開(kāi)頭的設(shè)備名稱則認(rèn)為是飛天的藍(lán)牙KEY設(shè)備,保存至第二設(shè)備名稱列表L2。如果第二設(shè)備名稱列表L2為空,則認(rèn)為沒(méi)有當(dāng)前沒(méi)有可操作的藍(lán)牙KEY,結(jié)束。如果第二設(shè)備名稱列表L2變量數(shù)大于1,則接收用戶選擇的需要操作的藍(lán)牙KEY作為默認(rèn)操作設(shè)備m_BluetoothDev,獲取默認(rèn)操作設(shè)備的唯一標(biāo)識(shí)符作為當(dāng)前設(shè)備信息。如果第二設(shè)備名稱列表L2變量數(shù)等于1,則獲取第二設(shè)備名稱列表L2中的設(shè)備名稱對(duì)應(yīng)的藍(lán)牙Key作為默認(rèn)操作設(shè)備m_BluetoothDev,獲取默認(rèn)操作設(shè)備的唯一標(biāo)識(shí)符作為當(dāng)前設(shè)備信息。
步驟106-3、應(yīng)用程序獲取與所述當(dāng)前設(shè)備信息相關(guān)聯(lián)的信息安全設(shè)備的套接字,判斷套接字是否為空,是則判定當(dāng)前信息安全設(shè)備與移動(dòng)設(shè)備不處于連接狀態(tài),否則判定當(dāng)前信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài)。
具體的,應(yīng)用程序調(diào)用m_BluetoothDev的成員函數(shù)createInsecureRfcommSocketToServiceRecord,參數(shù)為默認(rèn)操作設(shè)備的唯一標(biāo)識(shí)符,函數(shù)執(zhí)行成功后獲得BluetoothSocket的對(duì)象藍(lán)牙套接字m_BluetoothSocket,如果藍(lán)牙套接字m_BluetoothSocket為空,則應(yīng)用程序判定信息安全設(shè)備與移動(dòng)設(shè)備不處于連接狀態(tài),應(yīng)用程序調(diào)用m_BluetoothSocket的成員函數(shù)connect與默認(rèn)操作設(shè)備建立連接。藍(lán)牙套接字m_BluetoothSocket不為空否則判定默認(rèn)操作設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài)。
步驟107、應(yīng)用程序從應(yīng)用配置信息中讀取與該網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本;
與網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本的函數(shù)包括供網(wǎng)頁(yè)的調(diào)用的接口函數(shù)和交互函數(shù),進(jìn)一步的,交互函數(shù)具體用于生成查找本地函數(shù)請(qǐng)求,還用于根據(jù)本地函數(shù)返回值更新網(wǎng)頁(yè);
例如:用戶輸入的網(wǎng)頁(yè)地址為http://www.sampleurl.com則與網(wǎng)頁(yè)地址http://www.sampleurl.com對(duì)應(yīng)的JavaScript腳本JavaScript腳本為:
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionmyFunction(){\document.getElementsByName(\"firstname\")[0].value+=abc();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";
\script.text=functionabc(){\abc2();\returngetabc2Ret();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionabc2()
{\variframe=document.createElement(\"IFRAME\");\iframe.setAttribute(\"src\",\"objc://doFunc3\");\document.documentElement.appendChild(iframe);\iframe.parentNode.removeChild(iframe);\iframe=null;\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
上述JavaScript腳本中的函數(shù):供網(wǎng)頁(yè)中的調(diào)用的JavaScript接口函數(shù)為myFunction、交互函數(shù)為abc和abc2
步驟108、應(yīng)用程序在網(wǎng)頁(yè)中注入讀取到的與該網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本
具體地,應(yīng)用程序在網(wǎng)頁(yè)中調(diào)用控件CustomWebView的loadUrl(String)方法注入讀取到的JavaScript腳本;
為了更清楚的說(shuō)明本實(shí)施例:具體的,本實(shí)施例中注入腳本之前的網(wǎng)頁(yè)為:
html>
<head>
<scripttype="text/javascript">
functionmyFunction()
{
document.getElementsByName("firstname")[0].value+="feitian";
}
</script>
</head>
<body>
<form>
<inputtype="button"onclick="myFunction()"value="調(diào)用函數(shù)">
</form>
<formid="form1"action="test.do"method="post">
<inputtype="text"name="firstname"value="">
</form>
</body>
</html>
進(jìn)一步的,注入腳本之后的網(wǎng)頁(yè)具體為:
步驟109、應(yīng)用程序設(shè)置系統(tǒng)組件可以響應(yīng)于該腳本。
調(diào)用CustomWebView的成員函數(shù)getSettings,得到WebSettings對(duì)象。然后調(diào)用WebSettings的成員函數(shù)setJavaScriptEnabled,使CustomWebView對(duì)象可以響應(yīng)JavaScript腳本。
步驟110:應(yīng)用程序接收到對(duì)腳本的觸發(fā)信息后產(chǎn)生查找本地函數(shù)請(qǐng)求,并將查找本地函數(shù)請(qǐng)求發(fā)送給系統(tǒng)組件
系統(tǒng)組件具體為CustomWebView控件。查找本地函數(shù)請(qǐng)求具體包括本地函數(shù)名和函數(shù)參數(shù)。CustomWebView控件創(chuàng)建自定義的JavaScriptInterface類(lèi),類(lèi)中實(shí)現(xiàn)本地函數(shù)doFunc3。doFunc3為本地用于獲取用戶名的函數(shù)。然后再調(diào)用CustomWebView的成員函數(shù)addJavascriptInterface(參數(shù)一,參數(shù)二)注冊(cè)本地函數(shù),參數(shù)一為JavaScriptInterface類(lèi),參數(shù)二為字符串“objc”。
當(dāng)用戶點(diǎn)擊網(wǎng)頁(yè)中某個(gè)按鈕或者網(wǎng)頁(yè)加載完畢時(shí),觸發(fā)了JavaScript腳本中的接口函數(shù)myFunction,該接口函數(shù)調(diào)用JavaScript腳本的交互函數(shù)abc獲取用戶名,并將交互函數(shù)abc的返回值設(shè)置為網(wǎng)頁(yè)中需填入用戶名的對(duì)應(yīng)位置,交互函數(shù)abc調(diào)用交互函數(shù)abc2產(chǎn)生查找本地函數(shù)請(qǐng)求,本實(shí)施例中,獲取到查找本地函數(shù)請(qǐng)求為objc://doFunc3,向應(yīng)用程序中的CustomWebView控件發(fā)送查找本地函數(shù)請(qǐng)求;
步驟111、系統(tǒng)組件根據(jù)查找本地函數(shù)請(qǐng)求調(diào)用本地函數(shù)生成操作指令;
例如,應(yīng)用程序根據(jù)查找本地函數(shù)請(qǐng)求objc://doFunc3獲取本地Object-C函數(shù)doFunc3獲取用戶名,Object-C函數(shù)doFunc3為本地用于獲取用戶名的函數(shù)。系統(tǒng)組件根據(jù)獲取用戶名的函數(shù)doFunc3生成獲取用戶名的APDU指令,APDU指令即為操作指令。
步驟112,系統(tǒng)組件將操作指令發(fā)送給信息安全設(shè)備,并接收信息安全設(shè)備的響應(yīng)數(shù)據(jù)。
具體的,系統(tǒng)組件調(diào)用m_BluetoothSocket的成員函數(shù)getOutputStream,執(zhí)行成功后得到OutputStream對(duì)象m_os。調(diào)用m_BluetoothSocket的成員函數(shù)getInputStream,執(zhí)行成功后得到InputStream對(duì)象m_is,并通過(guò)m_os的成員函數(shù)write向信息安全設(shè)備發(fā)送獲取用戶名的APDU指令,發(fā)送完成后創(chuàng)建子線程,在子線程中調(diào)用m_is的成員函數(shù)read來(lái)從信息安全設(shè)備中獲取響應(yīng)數(shù)據(jù)。
步驟113、系統(tǒng)組件根據(jù)響應(yīng)數(shù)據(jù)中的標(biāo)志位判斷信息安全設(shè)備是否已根據(jù)操作指令成功執(zhí)行相應(yīng)操作,是則從響應(yīng)數(shù)據(jù)中獲取操作結(jié)果作為本地函數(shù)返回值,執(zhí)行步驟114,否則結(jié)束。
具體的,系統(tǒng)組件獲取響應(yīng)數(shù)據(jù)中的標(biāo)志位SW,若SW=0X9000則判定信息安全設(shè)備根據(jù)操作指令成功執(zhí)行相應(yīng)操作,否則判定信息安全設(shè)備根據(jù)操作指令沒(méi)有成功執(zhí)行相應(yīng)操作;
步驟114、應(yīng)用程序在網(wǎng)頁(yè)中注入并執(zhí)行獲取本地函數(shù)返回值的腳本得到本地函數(shù)返回值,并根據(jù)本地函數(shù)返回值更新并顯示網(wǎng)頁(yè),結(jié)束。
具體的,應(yīng)用程序在本地函數(shù)執(zhí)行完畢后再次通過(guò)CustomWebView的loadUrl(String)方法在網(wǎng)頁(yè)中注入獲取本地函數(shù)返回結(jié)果的腳本,函數(shù)名為getabc2Ret,Object-C中firstname變量的值通過(guò)getabc2Ret()函數(shù)返回,交互函數(shù)acb得到用戶名,進(jìn)而更新到網(wǎng)頁(yè)中。
本實(shí)施例中,獲取本地函數(shù)返回值的JavaScript腳本具體為:
"varscript=document.createElement(\"script\");
script.type=\"text/javascript\";script.text=functiongetabc2Ret(){return\"%@\";};
\document.getElementsByTagName(\"head\")[0].appendChild(script);,firstname";
具體的,應(yīng)用程序?qū)⒈镜睾瘮?shù)返回值的更新到網(wǎng)頁(yè)中名字為firstname的文本域中。
實(shí)施例3
本實(shí)施例以iOS平臺(tái)中支持已有Web應(yīng)用的方法為例進(jìn)行說(shuō)明。本方法基于iOS平臺(tái)UIWebView控件,用戶在移動(dòng)設(shè)備上訪問(wèn)Web應(yīng)用時(shí),應(yīng)用程序在加載預(yù)設(shè)的過(guò)濾網(wǎng)頁(yè)時(shí)加入指定的腳本,接收到對(duì)腳本的觸發(fā)信息后,腳本調(diào)用本地函數(shù)訪問(wèn)信息安全設(shè)備,并保存本地函數(shù)的返回值,應(yīng)用程序注入并執(zhí)行獲取本地函數(shù)返回值腳本,根據(jù)獲取到的本地函數(shù)返回值更新并顯示網(wǎng)頁(yè)。信息安全設(shè)備中包括用戶的個(gè)人信息,如姓名,性別,ID,照片。下面以用戶在移動(dòng)平臺(tái)上訪問(wèn)Web應(yīng)用將信息安全設(shè)備中的用戶名自動(dòng)填入網(wǎng)頁(yè)中的firstname的文本域中為例進(jìn)行介紹,如圖3所示,包括:
步驟201、應(yīng)用程序初始化。
應(yīng)用程序初始化,即從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地保存到應(yīng)用程序中。
步驟202、應(yīng)用程序顯示用戶界面,接收用戶輸入的網(wǎng)頁(yè)地址;
步驟203、應(yīng)用程序根據(jù)用戶輸入的網(wǎng)頁(yè)地址生成網(wǎng)絡(luò)請(qǐng)求;
具體地,本實(shí)施例中,應(yīng)用程序接收用戶輸入的網(wǎng)頁(yè)地址,根據(jù)該網(wǎng)頁(yè)地址產(chǎn)生NSURL對(duì)象,利用該對(duì)象生成網(wǎng)絡(luò)請(qǐng)求;具體地,應(yīng)用程序利用NSURL類(lèi)的方法URLWithString將用戶輸入的網(wǎng)頁(yè)地址封裝成NSURL對(duì)象,利用NSURLRequest類(lèi)的方法requestWithURL產(chǎn)生一個(gè)網(wǎng)絡(luò)請(qǐng)求,該網(wǎng)絡(luò)請(qǐng)求為一個(gè)NSURLRequest對(duì)象;
步驟204、應(yīng)用程序判斷網(wǎng)頁(yè)地址是否合法,是則根據(jù)網(wǎng)頁(yè)地址生成并加載網(wǎng)絡(luò)請(qǐng)求,執(zhí)行步驟205;否則提示網(wǎng)頁(yè)地址無(wú)效,返回步驟202。
具體地,應(yīng)用程序調(diào)用UIWebView控件的loadRequest方法加載該網(wǎng)絡(luò)請(qǐng)求;UIWebView控件為iOS平臺(tái)的系統(tǒng)控件,用于顯示網(wǎng)頁(yè)內(nèi)容;
具體地,本實(shí)施例中,該步驟包括:
步驟204-1、應(yīng)用程序在UIWebViewDelegate入口處進(jìn)入以下方法:-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType
具體地,UIWebViewDelegate是應(yīng)用程序內(nèi)部的一個(gè)對(duì)象,由應(yīng)用程序?qū)崿F(xiàn);
步驟204-2、應(yīng)用程序在該方法中根據(jù)NSURLRequest對(duì)象中的網(wǎng)頁(yè)地址成員變量判斷該網(wǎng)頁(yè)地址是否合法,設(shè)置該方法的返回值;
本實(shí)施例中,應(yīng)用程序根據(jù)RFC1738Uniform Resource Locators(URL)標(biāo)準(zhǔn)判斷網(wǎng)頁(yè)地址的合法性;例如,若該網(wǎng)頁(yè)地址為http://www.sampleurl.com,則該網(wǎng)頁(yè)地址合法,設(shè)置該方法的返回值為YES,若該網(wǎng)頁(yè)地址為htps://error.com,則該網(wǎng)頁(yè)地址不合法,設(shè)置該方法的返回值為NO;
步驟204-3、應(yīng)用程序判斷該方法的返回值是否為YES,是則根據(jù)網(wǎng)絡(luò)請(qǐng)求加載網(wǎng)絡(luò)請(qǐng)求,執(zhí)行步驟205,否則提示網(wǎng)頁(yè)地址無(wú)效,返回步驟202;
步驟205、應(yīng)用程序判斷預(yù)存的過(guò)濾網(wǎng)址中是否包括過(guò)濾網(wǎng)址,是則執(zhí)行步驟206,否則結(jié)束;
具體地,系統(tǒng)在加載完網(wǎng)絡(luò)請(qǐng)求獲取到網(wǎng)絡(luò)數(shù)據(jù)后,在UIWebViewDelegate對(duì)象結(jié)束處進(jìn)入-(void)webViewDidFinishLoad:(UIWebView*)webView方法,在該方法中應(yīng)用程序檢查該網(wǎng)頁(yè)地址是否屬于應(yīng)用程序配置信息的過(guò)濾網(wǎng)址,是則執(zhí)行步驟206,否則結(jié)束;
步驟206、應(yīng)用程序判斷是否有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài),是則執(zhí)行步驟207,否則與信息安全設(shè)備建立連接,執(zhí)行步驟207;
步驟207、應(yīng)用程序從應(yīng)用配置信息中讀取與該網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本;
與網(wǎng)頁(yè)地址對(duì)應(yīng)的JavaScript腳本的函數(shù)包括供網(wǎng)頁(yè)中的調(diào)用的JavaScript接口函數(shù)、與該接口函數(shù)對(duì)應(yīng)的交互函數(shù);
例如:用戶輸入的url為http://www.sampleurl.com則與網(wǎng)頁(yè)地址http://www.sampleurl.com對(duì)應(yīng)的JavaScript腳本JavaScript腳本為:
varscript=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionmyFunction(){\document.getElementsByName(\"firstname\")[0].value+=abc();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";
\script.text=functionabc(){\abc2();\returngetabc2Ret();\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
var script=document.createElement(\"script\");
\script.type=\"text/javascript\";\script.text=functionabc2()
{\variframe=document.createElement(\"IFRAME\");\iframe.setAttribute(\"src\",\"objc://doFunc3\");\document.documentElement.appendChild(iframe);\iframe.parentNode.removeChild(iframe);\iframe=null;\};
\document.getElementsByTagName(\"head\")[0].appendChild(script);
上述JavaScript腳本中的函數(shù):供網(wǎng)頁(yè)中的調(diào)用的JavaScript接口函數(shù)為myFunction、與該接口函數(shù)對(duì)應(yīng)的交互函數(shù)為abc和abc2
步驟208、應(yīng)用程序在網(wǎng)頁(yè)中注入讀取到的與網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本;
具體地,應(yīng)用程序在網(wǎng)頁(yè)中調(diào)用控件UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法注入讀取到的JavaScript腳本;
步驟209、應(yīng)用程序接收到對(duì)腳本的觸發(fā)信息后調(diào)用腳本中的函數(shù)產(chǎn)生查找本地函數(shù)請(qǐng)求,并將查找本地函數(shù)請(qǐng)求發(fā)送給系統(tǒng)組件;
本實(shí)施例中查找本地函數(shù)請(qǐng)求具體為:應(yīng)用程序按照預(yù)設(shè)格式產(chǎn)生的NSURLRequest對(duì)象,包括協(xié)議類(lèi)型、本地函數(shù)名和參數(shù);系統(tǒng)組件為UIWebView控件。
當(dāng)用戶點(diǎn)擊網(wǎng)頁(yè)中某個(gè)按鈕或者網(wǎng)頁(yè)加載完畢時(shí),觸發(fā)了JavaScript腳本中的接口函數(shù)myFunction,該接口函數(shù)調(diào)用JavaScript腳本的交互函數(shù)abc獲取用戶名,并將交互函數(shù)abc的返回值設(shè)置為網(wǎng)頁(yè)中需填入用戶名的對(duì)應(yīng)位置,交互函數(shù)abc調(diào)用交互函數(shù)abc2獲取對(duì)應(yīng)的查找本地函數(shù)請(qǐng)求,本實(shí)施例中,獲取到查找本地函數(shù)請(qǐng)求為objc://doFunc3,向UIWebView控件發(fā)送查找本地函數(shù)請(qǐng)求;
步驟210:系統(tǒng)組件根據(jù)查找本地函數(shù)請(qǐng)求查找并調(diào)用本地函數(shù)生成操作指令;
具體地,UIWebView控件到查找本地函數(shù)請(qǐng)求后,進(jìn)入U(xiǎn)IWebViewDelegate對(duì)象的-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)requestnavigationType:(UIWebViewNavigationType)navigationType方法,在該方法中根據(jù)本地函數(shù)名和函數(shù)參數(shù)查找并調(diào)用該本地函數(shù),保存本地函數(shù)返回值;例如,應(yīng)用程序根據(jù)查找本地函數(shù)請(qǐng)求objc://doFunc3獲取本地Object-C函數(shù)doFunc3獲取用戶名,Object-C函數(shù)doFunc3為本地用于獲取用戶名的函數(shù)。系統(tǒng)組件獲取用戶名的函數(shù)doFunc3生成獲取用戶名的APDU指令。
步驟211、系統(tǒng)組件將操作指令發(fā)送給信息安全設(shè)備,并接收信息安全設(shè)備的響應(yīng)數(shù)據(jù)。
具體的,系統(tǒng)組件通過(guò)m_peripheral成員函數(shù)readValueForCharacteristic:writeChristic向信息安全設(shè)備發(fā)送獲取用戶名的APDU指令。下發(fā)完成后通過(guò)m_peripheral的成員函數(shù)writeValueForCharacteristic:readChristic來(lái)從信息安全設(shè)備中獲取響應(yīng)數(shù)據(jù);
步驟212、系統(tǒng)組件根據(jù)響應(yīng)數(shù)據(jù)中的標(biāo)志位判斷信息安全設(shè)備是否已根據(jù)操作指令成功執(zhí)行相應(yīng)操作,是則從響應(yīng)數(shù)據(jù)中獲取操作結(jié)果作為本地函數(shù)返回值,執(zhí)行步驟213,否則結(jié)束。
具體的,系統(tǒng)組件檢查SW是否正確,如果SW=0x9000,既APDU執(zhí)行成功,返回的數(shù)據(jù)既是我們要的隨機(jī)數(shù),將隨機(jī)數(shù)作為doFunc3返回值。如果SW不等于0x9000,既doFunc3執(zhí)行失敗。
步驟213、應(yīng)用程序在網(wǎng)頁(yè)中注入并執(zhí)行獲取本地函數(shù)返回值腳本獲取本地函數(shù)返回值,并根據(jù)本地函數(shù)的返回值更新并顯示網(wǎng)頁(yè),結(jié)束。
具體的,應(yīng)用程序在本地函數(shù)執(zhí)行完畢后再次通過(guò)UIWebView的-(NSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script方法在網(wǎng)頁(yè)中注入獲取本地函數(shù)返回結(jié)果的JavaScript腳本,函數(shù)名為getabc2Ret,Object-C中firstname變量的值通過(guò)getabc2Ret()函數(shù)返回,交互函數(shù)acb得到用戶名,進(jìn)而更新到網(wǎng)頁(yè)中。
本實(shí)施例中,獲取本地函數(shù)返回值的JavaScript腳本具體為:
"varscript=document.createElement(\"script\");
script.type=\"text/javascript\";script.text=functiongetabc2Ret(){return\"%@\";};
\document.getElementsByTagName(\"head\")[0].appendChild(script);,firstname";
具體的,應(yīng)用程序獲取本地函數(shù)返回值的JavaScript腳本的返回值更新到網(wǎng)頁(yè)中名字為firstname的文本域中。
實(shí)施例4
本實(shí)施例提供一種移動(dòng)平臺(tái)支持已有Web應(yīng)用的裝置,如圖4所示,包括:應(yīng)用程序和系統(tǒng)組件;
應(yīng)用程序包括:
第一注入模塊11,用于在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)保存的腳本,并顯示網(wǎng)頁(yè);
查找本地函數(shù)請(qǐng)求生成模塊12,用于接收到對(duì)第一注入模塊11注入的腳本的觸發(fā)信息產(chǎn)生查找本地函數(shù)請(qǐng)求;
具體的,查找本地函數(shù)請(qǐng)求生成模塊12生成的查找本地函數(shù)請(qǐng)求具體包括本地函數(shù)名和函數(shù)參數(shù)。
第一發(fā)送模塊13,用于將查找本地函數(shù)請(qǐng)求生成模塊12生成的查找本地函數(shù)請(qǐng)求發(fā)送給所述系統(tǒng)組件;
第二注入模塊18,用于在網(wǎng)頁(yè)中注入獲取本地函數(shù)返回值腳本;
執(zhí)行模塊19,用于執(zhí)行所述第二注入模塊18注入的獲取本地函數(shù)返回值腳本,獲取本地函數(shù)返回值;
顯示模塊20,用于根據(jù)執(zhí)行模塊19獲取到的本地函數(shù)返回值更新并顯示網(wǎng)頁(yè)。
所述系統(tǒng)組件包括:
調(diào)用模塊14,用于接收應(yīng)用程序發(fā)送的查找本地函數(shù)請(qǐng)求;根據(jù)所述查找本地函數(shù)請(qǐng)求調(diào)用本地函數(shù)生成操作指令;
調(diào)用模塊14具體用于從查找本地函數(shù)請(qǐng)求中獲取本地函數(shù)名和函數(shù)參數(shù),根據(jù)本地函數(shù)名和函數(shù)參數(shù)調(diào)用本地函數(shù)生成操作指令。
第二發(fā)送模塊15,用于將所述調(diào)用模塊14生成的操作指令發(fā)送給信息安全設(shè)備;
接收模塊16,用于接收信息安全設(shè)備返回的響應(yīng)數(shù)據(jù);
獲取操作結(jié)果模塊17,用于將接收模塊16接收到的響應(yīng)數(shù)據(jù)中的操作結(jié)果作為本地函數(shù)返回值。
需要說(shuō)明的是,腳本包括接口函數(shù)、交互函數(shù);
查找本地函數(shù)請(qǐng)求生成模塊12,具體用于接收對(duì)第一注入模塊11注入的腳本中的接口函數(shù)的觸發(fā)信息,接口函數(shù)調(diào)用交互函數(shù)產(chǎn)生查找本地函數(shù)請(qǐng)求。
優(yōu)選的,應(yīng)用程序還包括:
存儲(chǔ)模塊:用于存儲(chǔ)有過(guò)濾網(wǎng)址以及與所述過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本。
第一判斷模塊,用于判斷所述存儲(chǔ)模塊中存儲(chǔ)的過(guò)濾網(wǎng)址中是否包括所述網(wǎng)頁(yè)地址;
第一注入模塊11,用于若第一判斷模塊判定過(guò)濾網(wǎng)址中包括所述網(wǎng)頁(yè)地址時(shí)在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)腳本。
優(yōu)選的,應(yīng)用程序還包括:
第二判斷模塊,用于判斷網(wǎng)頁(yè)地址是否合法;
加載模塊,用于若第二判斷模塊判定網(wǎng)頁(yè)地址合法時(shí)生成并加載網(wǎng)絡(luò)請(qǐng)求;
所述第一注入模塊,當(dāng)所述加載模塊加載網(wǎng)絡(luò)請(qǐng)求完成后在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)腳本。
優(yōu)選的,應(yīng)用程序還包括:
第三判斷模塊,用于判斷是否有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài);
第一注入模塊11,用于若第三判斷模塊判定有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài)時(shí)在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本;還用于若所述第三判斷模塊判定沒(méi)有信息安全設(shè)備與移動(dòng)設(shè)備處于連接狀態(tài)時(shí)與所述信息安全設(shè)備建立連接,并在網(wǎng)頁(yè)中注入與所述網(wǎng)頁(yè)地址對(duì)應(yīng)的腳本。
優(yōu)選的,系統(tǒng)組件還包括:
第四判斷模塊,用于根據(jù)接收模塊接收到的響應(yīng)數(shù)據(jù)中的標(biāo)志位判斷信息安全設(shè)備是否成功根據(jù)操作指令完成相應(yīng)操作;
獲取操作結(jié)果模塊17,用于若所述第四判斷模塊判定信息安全設(shè)備成功根據(jù)操作指令完成相應(yīng)操作后從響應(yīng)數(shù)據(jù)中獲取操作結(jié)果,將操作結(jié)果作為本地函數(shù)的返回值。
優(yōu)選的,應(yīng)用程序還包括:
初始化模塊,用于從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本,并將過(guò)濾網(wǎng)址和腳本對(duì)應(yīng)地保存到應(yīng)用程序中。
初始化模塊具體包括:
第二判斷子模塊,用于獲取初始化標(biāo)志位,并根據(jù)初始化標(biāo)志位判斷是否已進(jìn)行初始化;
存儲(chǔ)子模塊,用于若第二判斷子模塊判定沒(méi)有初始化時(shí)從配置文件或者配置卡中獲取過(guò)濾網(wǎng)址以及與過(guò)濾網(wǎng)址對(duì)應(yīng)的腳本存儲(chǔ)到應(yīng)用程序中,并更新初始化標(biāo)志位;
第一注入模塊11,用于若所述第二判斷子模塊判定已進(jìn)行初始化后在網(wǎng)頁(yè)中注入與網(wǎng)頁(yè)地址對(duì)應(yīng)保存的腳本,并顯示網(wǎng)頁(yè)。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明公開(kāi)的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。