人
已閱讀
已閱讀
APP原生開發(fā)如何與H5進(jìn)行交互
來(lái)源:lexintech.com ?? ?? 發(fā)布時(shí)間:2019-05-17
目前,越來(lái)越多的APP開發(fā)會(huì)選擇原生與H5混合的Hybrid App即混合模式APP。H5頁(yè)面很多時(shí)候都需要與原生 app 進(jìn)行交互、溝通(運(yùn)行在 webview中),比如微信的 jssdk,通過 window.wx 對(duì)象調(diào)用一些原生 app 的功能。下面我們就來(lái)聊一聊原生 app 與 H5交互的原理。
原生 app 與H5的交互,本質(zhì)上說,就是兩種調(diào)用:
app 調(diào)用 h5 的代碼
h5 調(diào)用 app 的代碼
app 調(diào)用 h5 的代碼
h5 調(diào)用 app 的代碼
1. app 調(diào)用 h5 的代碼
因?yàn)?app 是宿主,可以直接訪問 h5,所以這種調(diào)用比較簡(jiǎn)單,就是在 h5 中曝露一些全局對(duì)象(包括方法),然后在原生 app 中調(diào)用這些對(duì)象。
因?yàn)?app 是宿主,可以直接訪問 h5,所以這種調(diào)用比較簡(jiǎn)單,就是在 h5 中曝露一些全局對(duì)象(包括方法),然后在原生 app 中調(diào)用這些對(duì)象。
2. h5 調(diào)用 app 的代碼
因?yàn)?h5 不能直接訪問宿主 app,所以這種調(diào)用就相對(duì)復(fù)雜一點(diǎn)。
這種調(diào)用常用有兩種方式:
由 app 向 h5 注入一個(gè)全局js對(duì)象,然后在 h5 直接訪問這個(gè)對(duì)象,
由 h5 發(fā)起一個(gè)自定義協(xié)議請(qǐng)求,app 攔截這個(gè)請(qǐng)求后,再由 app 調(diào)用 h5 中的回調(diào)函數(shù)。
(1)由 app 向 h5 注入一個(gè)全局js對(duì)象
這種方式溝通機(jī)制簡(jiǎn)單,比較好理解,并且對(duì)于 h5 來(lái)說,沒有新的東西,所以是比較推薦的一種方式。但這種方式可能存在安全隱患,詳細(xì)查看 你不知道的 Android WebView 使用漏洞。
(2)由 h5 發(fā)起一個(gè)自定義協(xié)議請(qǐng)求
這種方式要稍復(fù)雜一點(diǎn),因?yàn)樾枰远x協(xié)議,這對(duì)很多前端開發(fā)者來(lái)說是比較新的東西。所以一般不推薦這種方式,可以作為第一種方式的補(bǔ)充。
大致需要以下幾個(gè)步驟:
由 app 自定義協(xié)議,
在 h5 定義好回調(diào)函數(shù),
由 h5 發(fā)起一個(gè)自定義協(xié)議請(qǐng)求,
app 攔截這個(gè)請(qǐng)求后,進(jìn)行相應(yīng)的操作,獲取返回值
由 app 調(diào)用 h5 中的回調(diào)函數(shù)。
以上就是原生 app 與 H5交互的原理。
大致需要以下幾個(gè)步驟:
由 app 自定義協(xié)議,
在 h5 定義好回調(diào)函數(shù),
由 h5 發(fā)起一個(gè)自定義協(xié)議請(qǐng)求,
app 攔截這個(gè)請(qǐng)求后,進(jìn)行相應(yīng)的操作,獲取返回值
由 app 調(diào)用 h5 中的回調(diào)函數(shù)。
以上就是原生 app 與 H5交互的原理。