WebView
原本就支持js和Java相互調用,你只須要開啓 WebView
的JavaScript腳本執行,java
而後經過代碼 mWebView.addJavascriptInterface(new JsBridge(), "bxbxbai");
git
向Html 5頁面時注入一個Java對象,而後就能夠在Html 5頁面中調用Native的功能了github
微信應該是Hybrid 開發作的最好的App之一,它是怎麼作交互的呢?web
答案就是 微信JS-SDK
,去微信開發者文檔中能夠看到,微信JS-SDK封裝了各類微信的功能,微信
好比分享到朋友圈,圖像接口,音頻接口,支付接口地理位置接口等等。網絡
開發者只須要調用微信JS-SDK中的函數,而後統一由JS-SDK來調用微信中的功能,微信開發
這樣好處就是我寫了一個Html 5的應用或網頁,在Android和iOS的微信中均可以正常運行了框架
通常來說,也是我目前知道的兩種主流的方式就是函數
第2種方式實現起來很簡單,可是一個致命的問題就是這種交互方式是單向的,Html 5沒法實現回調。ui
像雲音樂App中這種點擊跳轉到具體頁面的功能,Schema的方式確實能夠簡單實現,並且也很是適合。
若是需求變得複雜,假如Html 5須要獲取Native App中的用戶信息,那麼最好使用js調用的方式。
Cordova是Apache的一個開源解決方案,不過它須要xml配置 CordovaPlugin
信息,使用會比較麻煩,並且這個框架很重,具體請自行搜索Cordova使用教程
下面這個開源項目是我我的以爲比較合理的解決方案,也比較輕量級,下圖就是一個Demo
https://github.com/pedant/safe-java-js-webview-bridge
本文講的Hybrid開發就是Native客戶端中嵌入了Html App的功能,這方面微信應該是作的最好的,
因爲Html 5的效率以及耗電問題,我我的以爲用戶是不能知足Web App的體驗的,Hybrid App也只適用於某些場景。
一些基礎的功能,好比調用手機的攝像頭,獲取地理位置,登陸註冊功能等等,作成Native的功能,比讓Html 5來調用更好,這樣的體驗也更好。
若是你把一個登陸和註冊功能也作成Html 5,在弱網絡環境下,這個體驗應該會很是的差,或許你等半天還沒加載出頁面。
你可能會說,我能夠預先加載Html 5的代碼,打開App時直接加載,那麼我說你在給本身找麻煩,若是要這樣的話,Native開發或許更快一點。
那麼什麼狀況適合Html 5開發呢?像一些活動頁面,好比秒殺、團購等適合作Html 5,由於這些頁面可能涉及的很是炫並且複雜,Html 5開發或許會簡單點,關鍵是這些頁面時效性短,更新更快,由於一個活動說不定就一週時間,下週換活動,若是這樣的話,你還作Native是確定不行的