本發(fā)明涉及手機(jī)應(yīng)用開發(fā)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)Hybrid App的HTML與Native交互的方法。
背景技術(shù):
Hybrid App是指Web與Native相結(jié)合的App,它看起來就是一個(gè)Native App,但部分功能使用UIWebView加載HTML的網(wǎng)頁實(shí)現(xiàn)。兩種不同實(shí)現(xiàn)方式之間不能直接交互,所以不光要解決HTML與Native兩個(gè)不同環(huán)境之間的交互,還要解決兩個(gè)平臺(tái)自身的不同機(jī)制問題。不同平臺(tái)使用不同的方式讓HTML與native交互,會(huì)降低開發(fā)效果和代碼可維護(hù)性變差,造成額外的工作量和不容易定位問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種一種實(shí)現(xiàn)Hybrid App的HTML與Native交互的方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
一種實(shí)現(xiàn)Hybrid App的HTML與Native交互的方法,包括以下步驟:
S1,Android:Javascript調(diào)用Android:Native;
S2,所述Android:Native調(diào)用所述Android:Javascript;
S3,iOS:Javascript調(diào)用iOS:Native;
S4,所述iOS:Native調(diào)用所述iOS:Javascript。
優(yōu)選的,所述S1具體包括:Webview使用addJavascriptInterface方法向HTML注入Android:Javascript方法,HTML直接調(diào)用注入方法。
優(yōu)選的,所述S2具體包括:所述Webview使用loadurl方法直接調(diào)用HTML的Android:Javascript方法。
優(yōu)選的,所述S3具體包括:使用iOS:Javascript創(chuàng)建一個(gè)透明的iframe,設(shè)置所述ifame的src為自定義的協(xié)議,當(dāng)所述ifame的src更改時(shí),UIWebview先回調(diào)其delegate的Webview:shouldStartLoadWithRequest:navigationType:方 法,攔截src內(nèi)容并解析處理。
優(yōu)選的,所述S4具體包括:使用UIWebview的stringByEvaluatingJavaScriptFromString方法直接調(diào)用HTML中的Javascript方法。
本發(fā)明的有益效果是:使用HTML+Native開發(fā)的功能,不僅解決了HTML與Native兩個(gè)不同環(huán)境之間的交互,也解決了Android和iOS平臺(tái)自身機(jī)制的不同障礙,在服務(wù)器端更新HTML功能,使得無法享用新版本的用戶也能體驗(yàn)到新功能。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方式僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
一種實(shí)現(xiàn)Hybrid App的HTML與Native交互的方法,其特征在于,包括以下步驟:
S1,Android:Javascript調(diào)用Android:Native;
S2,所述Android:Native調(diào)用所述Android:Javascript;
S3,iOS:Javascript調(diào)用iOS:Native;
S4,所述iOS:Native調(diào)用所述iOS:Javascript。
優(yōu)選的,所述S1具體包括:Webview使用addJavascriptInterface方法向HTML注入Android:Javascript方法,HTML直接調(diào)用注入方法。
優(yōu)選的,所述S2具體包括:所述Webview使用loadurl方法直接調(diào)用HTML的Android:Javascript方法。
優(yōu)選的,所述S3具體包括:使用iOS:Javascript創(chuàng)建一個(gè)透明的iframe,設(shè)置所述ifame的src為自定義的協(xié)議,當(dāng)所述ifame的src更改時(shí),UIWebview先回調(diào)其delegate的Webview:shouldStartLoadWithRequest:navigationType:方法,攔截src內(nèi)容并解析處理。
優(yōu)選的,所述S4具體包括:使用UIWebview的stringByEvaluatingJavaScriptFromString方法直接調(diào)用HTML中的Javascript方法。
具體地,
Android:
Javascript調(diào)用Native:Webview使用addJavascriptInterface方法向HTML注入Javascript方法,HTML可直接調(diào)用注入方法。
Native調(diào)用Javascript:Webview使用loadurl方法直接調(diào)用HTML的Javascript方法。
iOS:
Javascript調(diào)用Native:使用Javascript創(chuàng)建一個(gè)透明的iframe,設(shè)置這個(gè)ifame的src為自定義的協(xié)議,而ifame的src更改時(shí),UIWebView會(huì)先回調(diào)其delegate的Webview:shouldStartLoadWithRequest:navigationType:方法,攔截src內(nèi)容并解析處理。
Native調(diào)用Javascript:使用UIWebView的stringByEvaluatingJavaScriptFromString方法直接條用HTML中的Javascript方法
通過采用本發(fā)明公開的上述技術(shù)方案,得到了如下有益的效果:
使用HTML+Native開發(fā)的功能,不僅解決了HTML與Native兩個(gè)不同環(huán)境之間的交互,也解決了Android和iOS平臺(tái)自身機(jī)制的不同障礙,在服務(wù)器端更新HTML功能,使得無法享用新版本的用戶也能體驗(yàn)到新功能。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視本發(fā)明的保護(hù)范圍。