本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法及裝置。
背景技術(shù):
對于結(jié)合了原生應(yīng)用和web應(yīng)用特點的混合應(yīng)用,網(wǎng)頁端調(diào)用本地應(yīng)用的各個功能的實現(xiàn)方式很多。目前,主流的網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法需要預(yù)先在本地應(yīng)用中編寫調(diào)用各個功能的邏輯代碼,一般由if{}else{}語句實現(xiàn)。一旦網(wǎng)頁端需要增加調(diào)用本地應(yīng)用的某項功能,本地應(yīng)用需要同時更新邏輯代碼中的if{}else{}語句,否則即使本地應(yīng)用中實現(xiàn)了該項功能,網(wǎng)頁端也不能正常的對其進行調(diào)用??梢?,上述方式中不能省略的是開發(fā)人員對本地應(yīng)用中邏輯代碼的更新維護。
技術(shù)實現(xiàn)要素:
針對上述問題,本發(fā)明提供了一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法及裝置,不僅能夠節(jié)省開發(fā)人員對本地應(yīng)用中邏輯代碼的維護,還保證網(wǎng)頁端能夠?qū)Ρ镜貞?yīng)用的所有功能進行調(diào)用。
本發(fā)明提供了一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法,所述方法包括:
接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段;
按照所述編程語言的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱;
按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。
優(yōu)選地,在執(zhí)行所述語法樹中任一類名稱或方法名稱對應(yīng)的類或方法之前,首先判斷本地是否存在所述類或所述方法;
如果本地存在所述類或所述方法,則執(zhí)行所述類或所述方法;否則,提示 錯誤。
優(yōu)選地,在執(zhí)行所述語法樹中最后一個方法后,判斷所述方法是否存在返回值;
如果所述方法存在返回值,則將所述返回值發(fā)送至所述網(wǎng)頁端。
優(yōu)選地,所述編程語言為objective-c語言。
優(yōu)選地,所述如果本地存在所述類或所述方法,則執(zhí)行所述類或所述方法,具體包括:
利用objective-c語言的runtime機制,在本地應(yīng)用運行的過程中,執(zhí)行本地存在的所述類和所述方法。
本發(fā)明還提供了一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的裝置,所述裝置包括:
接收模塊,用于接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段;
解析模塊,用于按照所述編程語言的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱;
第一執(zhí)行模塊,用于按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。
優(yōu)選地,所述裝置還包括:
第一判斷模塊,用于在執(zhí)行所述語法樹中任一類名稱或方法名稱對應(yīng)的類或方法之前,首先判斷本地是否存在所述類或所述方法;
第二執(zhí)行模塊,用于在本地存在所述類或所述方法時,執(zhí)行所述類或所述方法;
提示模塊,用于在本地不存在所述類或所述方法時,提示錯誤。
優(yōu)選地,所述裝置還包括:
第二判斷模塊,用于在執(zhí)行所述語法樹中最后一個方法后,判斷所述方法是否存在返回值;
發(fā)送模塊,用于在所述方法存在返回值時,將所述返回值發(fā)送至所述網(wǎng)頁端。
優(yōu)選地,所述編程語言為objective-c語言。
優(yōu)選地,所述第二執(zhí)行模塊,具體用于:利用objective-c語言的runtime機制,在本地應(yīng)用運行的過程中,執(zhí)行本地存在的所述類和所述方法。
本發(fā)明提供的網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法中,首先,本地終端接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段。其次,所述本地終端按照所述編程語言的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱。最后,所述本地終端按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。本發(fā)明的本地終端在接收到網(wǎng)頁端的任何功能的代碼段時,均是按照預(yù)設(shè)編程語言的語法規(guī)則將其解析為語法樹,并根據(jù)語法樹中的執(zhí)行順序依次執(zhí)行所述代碼段中的各個類和方法,最終實現(xiàn)網(wǎng)頁端對本地應(yīng)用功能的方法。即使網(wǎng)頁端需要增加調(diào)用本地應(yīng)用的某項功能,本地終端也不需要更新,節(jié)省了開發(fā)人員的更新維護成本。
附圖說明
為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法的流程圖;
圖2為本發(fā)明實施例提供的另一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法的流程圖;
圖3為本發(fā)明實施例提供的一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的裝置結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是 全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
實施例一
參考圖1,圖1為本發(fā)明實施例提供的一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法的流程圖,該方法具體可以包括:(s101-s103)
s101:本地終端接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段。
s102:本地終端按照所述編程語言的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱。
s103:本地終端按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。
混合應(yīng)用中的網(wǎng)頁端存在訪問本地應(yīng)用的某項功能的需求時,向本地終端發(fā)送實現(xiàn)該項功能的代碼段。所述代碼段為網(wǎng)頁端中預(yù)先設(shè)置的。實際應(yīng)用中,所述網(wǎng)頁端預(yù)先設(shè)置有實現(xiàn)各項功能的代碼段,其中所述代碼段由預(yù)設(shè)編程語言編寫的。通常在實現(xiàn)ios系統(tǒng)的混合應(yīng)用時網(wǎng)頁端采用objective-c編寫各項功能的代碼段。
本地終端在接收到網(wǎng)頁端以字符串格式發(fā)送的代碼段后,按照所述網(wǎng)頁端用于編寫各個功能的代碼段使用的編程語言的語法規(guī)則對字符串格式的代碼段進行解析。具體的,本地終端按照所述編程語言的語法規(guī)則,從所述代碼段中查找到類名稱和方法名稱,并按照他們的執(zhí)行順序建立語法樹。其中,代碼段的語法樹能夠表示出該代碼段中包括的類和方法的執(zhí)行順序。
本實施例中,本地終端在獲得所述代碼段的語法樹后,按照所述語法樹中類和方法的執(zhí)行順序,查詢本地是否存在所述類和方法。當本地存在所述類或所述方法時,執(zhí)行所述類或所述方法。當所述語法樹中包括的類和方法均被執(zhí)行結(jié)束時,網(wǎng)頁端則完成了對本地應(yīng)用功能的調(diào)用。另外,當所述語法樹中最后一個被執(zhí)行的方法存在返回值時,將該返回值發(fā)送至網(wǎng)頁端,此時所述網(wǎng)頁端在接收到所述返回值時,即完成了對本地應(yīng)用功能的調(diào)用。
本發(fā)明實施例提供的網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法中,首先,本地終端接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以 預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段。其次,所述本地終端按照所述編程語言的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱。最后,所述本地終端按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。本發(fā)明實施例中的本地終端在接收到網(wǎng)頁端的任何功能的代碼段時,均是按照預(yù)設(shè)編程語言的語法規(guī)則將其解析為語法樹,并根據(jù)語法樹中的執(zhí)行順序依次執(zhí)行所述代碼段中的各個類和方法,最終實現(xiàn)網(wǎng)頁端對本地應(yīng)用功能的方法。即使網(wǎng)頁端需要增加調(diào)用本地應(yīng)用的某項功能,本地終端也不需要更新,節(jié)省了開發(fā)人員的更新維護成本。
參考圖2,圖2為本發(fā)明實施例提供的另一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法的流程圖,該方法具體可以包括:(s201-s206)
s201:本地終端接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以objective-c編寫的實現(xiàn)各個功能的代碼段。
s202:本地終端按照objective-c的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱。
s203:所述本地終端判斷本地是否存在所述語法樹中的類名稱、方法名稱對應(yīng)的類和方法,如果存在,則執(zhí)行s204。
s204:利用objective-c語言的runtime機制,在本地應(yīng)用運行的過程中,按照所述執(zhí)行順序執(zhí)行所述語法樹中的類名稱、方法名稱對應(yīng)的類和方法。
s205:在執(zhí)行所述語法樹中最后一個方法后,判斷所述方法是否存在返回值;如果是,則執(zhí)行s206。
s206:將所述返回值發(fā)送至所述網(wǎng)頁端。
本發(fā)明實施例提供的網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法應(yīng)用于ios系統(tǒng)的混合應(yīng)用中。objective-c語言的runtime機制具有在程序運行的過程中動態(tài)執(zhí)行方法的特性,所以,本發(fā)明實施例利用objective-c語言的runtime機制,在本地應(yīng)用運行的過程中,按照語法樹中類和方法的執(zhí)行順序,依次執(zhí)行類和方法,最終完成網(wǎng)頁端對本地應(yīng)用功能的調(diào)用。
由于本發(fā)明實施例中的本地終端在接收到網(wǎng)頁端的任何功能的代碼段時,均是按照預(yù)設(shè)編程語言的語法規(guī)則將其解析為語法樹,并根據(jù)語法樹中的執(zhí)行 順序依次執(zhí)行所述代碼段中的各個類和方法,最終實現(xiàn)網(wǎng)頁端對本地應(yīng)用功能的方法。所以,即使網(wǎng)頁端需要增加調(diào)用本地應(yīng)用的某項功能,本地終端也不需要更新,節(jié)省了開發(fā)人員的更新維護成本。
參考圖3,圖3為本發(fā)明實施例提供的一種網(wǎng)頁端調(diào)用本地應(yīng)用功能的裝置結(jié)構(gòu)示意圖,所述裝置包括:(301-303)
接收模塊301,用于接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段;
解析模塊302,用于按照所述編程語言的語法規(guī)則,將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱;
第一執(zhí)行模塊303,用于按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。
實際應(yīng)用中,所述裝置還包括:
第一判斷模塊,用于在執(zhí)行所述語法樹中任一類名稱或方法名稱對應(yīng)的類或方法之前,首先判斷本地是否存在所述類或所述方法;
第二執(zhí)行模塊,用于在本地存在所述類或所述方法時,執(zhí)行所述類或所述方法;
提示模塊,用于在本地不存在所述類或所述方法時,提示錯誤。
另外,所述裝置還包括:
第二判斷模塊,用于在執(zhí)行所述語法樹中最后一個方法后,判斷所述方法是否存在返回值;
發(fā)送模塊,用于在所述方法存在返回值時,將所述返回值發(fā)送至所述網(wǎng)頁端。
一種優(yōu)選實現(xiàn)方式中,所述網(wǎng)頁端使用的編程語言為objective-c語言。
具體的,所述第二執(zhí)行模塊,具體用于:利用objective-c語言的runtime機制,在本地應(yīng)用運行的過程中,執(zhí)行本地存在的所述類和所述方法。
本發(fā)明實施例提供的網(wǎng)頁端調(diào)用本地應(yīng)用功能的裝置能夠?qū)崿F(xiàn)以下功能:接收網(wǎng)頁端以字符串格式發(fā)送的任一功能的代碼段,所述網(wǎng)頁端預(yù)先設(shè)置有以預(yù)設(shè)編程語言編寫的實現(xiàn)各個功能的代碼段。按照所述編程語言的語法規(guī)則, 將所述代碼段解析成語法樹,所述語法樹包括所述代碼段中具有執(zhí)行順序的類名稱和方法名稱。按照所述執(zhí)行順序,執(zhí)行所述語法樹中的類名稱和方法名稱分別對應(yīng)的類和方法,完成所述功能的調(diào)用。本發(fā)明實施例中的本地終端在接收到網(wǎng)頁端的任何功能的代碼段時,均是按照預(yù)設(shè)編程語言的語法規(guī)則將其解析為語法樹,并根據(jù)語法樹中的執(zhí)行順序依次執(zhí)行所述代碼段中的各個類和方法,最終實現(xiàn)網(wǎng)頁端對本地應(yīng)用功能的方法。即使網(wǎng)頁端需要增加調(diào)用本地應(yīng)用的某項功能,本地終端也不需要更新,節(jié)省了開發(fā)人員的更新維護成本。
對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對本發(fā)明實施例所提供的網(wǎng)頁端調(diào)用本地應(yīng)用功能的方法及裝置進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍 上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。