摘要:查看安裝包版本信息查看信息提供掃描二維碼打開網(wǎng)頁。所以端發(fā)起網(wǎng)絡(luò)請求的時候,需要使用,這樣就可以避免這個問題參考資料什么是方案之和頁面交互原理的原理實現(xiàn)示例三部曲基本用法
1. 為什么選擇Hybrid開發(fā)方式
Hybrid開發(fā)效率高、跨平臺(M /58APP/英才APP)
維護(hù)成本低,功能可復(fù)用
針對新手友好,學(xué)習(xí)成本較低
功能更加完善,性能和體驗要比起web app好太多
部分性能要求的頁面可用原生實現(xiàn)
Hybrid從業(yè)務(wù)開發(fā)上講,沒有版本問題,有BUG能及時修復(fù)
缺點(diǎn)
相比原生,性能仍然有較大損耗
不適用于交互性較強(qiáng)的app
2. Hybird 提前掌握那些問題Hybrid中Native與前端各自的工作是什么
Hybrid的交互接口如何設(shè)計
資源緩存策略,白屏問題
2-1 Hybrid中Native與前端各自的工作是什么Native與前端的界限,首先Native提供的是一宿主環(huán)境,要合理的利用Native提供的能力,要實現(xiàn)通用的Hybrid平臺架構(gòu)
nativeUI組件、消息類組件
通訊錄、系統(tǒng)、設(shè)備信息讀取接口
與Native的互相跳轉(zhuǎn),比如H5如何跳到一個Native頁面,H5如何新開Webview做動畫跳到另一個H5頁面
賬號信息管理 Native需要設(shè)計良好安全的身份驗證機(jī)制
資源訪問機(jī)制
Native首先需要考慮如何訪問H5資源,做到既能以file的方式訪問Native內(nèi)部資源,又能使用url的方式訪問線上資源
前端要做的事情就是封裝調(diào)用Native提供的各種能力-Hybrid開發(fā)調(diào)試
2-2.webview 生命周期函數(shù)// 網(wǎng)頁開始加載的時候調(diào)用 - (void )webViewDidStartLoad:(UIWebView *)webView{ } // 網(wǎng)頁加載完成的時候調(diào)用 - (void )webViewDidFinishLoad:(UIWebView *)webView{ } // 網(wǎng)頁加載錯誤的時候調(diào)用 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ }2-3 Hybrid交互設(shè)計-JSBridge
1.Native調(diào)用前端頁面的JS方法
2.前端頁面通過JS調(diào)用Native提供的接口
兩者之間的橋梁是Webview。app自身可以自定義url schema,并且把自定義的url注冊在調(diào)度中心
1.JS to native
在每個版本會提供一些API,前端會有一個對應(yīng)的框架團(tuán)隊對其進(jìn)行封裝,釋放業(yè)務(wù)接口
/**login*/ CHRJSBridge.call("pagetansNative", { action: "pagetansNative", //type類型是跳轉(zhuǎn)native的 params: { controllername: "to_login" //跳轉(zhuǎn)native的對應(yīng)頁 }, isbacktomain: 0, //跳轉(zhuǎn)后是否關(guān)閉當(dāng)前,默認(rèn)false callbackFun:(params)=>{this.id=params.id}// 回調(diào)函數(shù) });
handleConfirm(params) { let jsonStr = JSON.stringify(params); if (this.isIOS()) { window.webkit.messageHandlers.testMethod.postMessage(jsonStr) } else { javascript: chrclient.onJsActionRequest(jsonStr) } }
## native to js
window.nativeMethod = function(methodrParams) { console.log("nativeMethod"); let actionName = JSON.parse(methodrParams).action; let actionParams = JSON.parse(methodrParams).params; //console.log("methodrParams=====", actionName, actionParams); window[actionName](actionParams); }
## 2. 封裝的CHRJSBridge/JavaScriptCore
主體內(nèi)容:
小的DEMO
## 3. 這樣做有一個前提是,Native本身已經(jīng)十分穩(wěn)定了.測試包
- 1.設(shè)置里面清除緩存。? - 2.查看安裝包版本信息? - 3..查看cookie信息 - 4.提供掃描二維碼打開網(wǎng)頁。供前期沒有開通入口,F(xiàn)E自測?
## 4. H5-native
url scheme Native能捕捉webview發(fā)出的一切請求
chrmain://nativejump/main/web?params=
Native是有能力為前端注入所有需要的方法了
var messagingIframe = document.createElement("iframe"); messagingIframe.style.display = "none" document.documentElement.appendChild(messagingIframe); messagingIframe.src = url
注意,正常來說是可以通過window.location.href達(dá)到發(fā)起網(wǎng)絡(luò)請求的效果的,但是有一個很嚴(yán)重的問題,就是如果我們連續(xù)多次修改window.location.href的值,在Native層只能接收到最后一次請求,前面的請求都會被忽略掉。所以JS端發(fā)起網(wǎng)絡(luò)請求的時候,需要使用iframe,這樣就可以避免這個問題
5.參考資料
1.什么是Hybrid App
2.Native、Hybrid、React Native、Web App方案
3.Hybrid APP之Native和H5頁面交互原理
4.JSBridge的原理
5.JSBridge實現(xiàn)示例
6.WebView三部曲:基本用法
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/109766.html
摘要:本文轉(zhuǎn)載自眾成翻譯譯者文藺鏈接原文譯者注本文講到的可能和我們通常理解的略有差異。文中部分主要講到的是,這一點(diǎn)可能在一些開發(fā)者看來是有爭議的。談到,最好也是最簡單的辦法是使用免費(fèi)開源的框架。需要快速開發(fā)打樣那可能最好的選擇。 本文轉(zhuǎn)載自:眾成翻譯譯者:文藺鏈接:http://www.zcfy.cc/article/861原文:http://www.telerik.com/blogs/h...
摘要:在被收購,同時把其中的核心層代碼進(jìn)行了開源,新版本后的進(jìn)入商業(yè)化。將做成了一種插件式的方式,便于擴(kuò)展。到今天,以上的購買都從移動端來,歷時一年半。所以我們總結(jié)一些一般的演進(jìn)流程按照不同的分類,做個簡單的建議電商類工具類社交類游戲類方案 Native | Hybrid | Web App選型及演進(jìn)方案 目錄 App形態(tài) Web App Native App Hybrid App ...
閱讀 4171·2021-09-29 09:34
閱讀 3870·2021-09-27 13:34
閱讀 656·2021-09-24 09:47
閱讀 3102·2019-08-30 15:53
閱讀 1885·2019-08-26 13:54
閱讀 2135·2019-08-26 13:43
閱讀 615·2019-08-23 14:47
閱讀 1802·2019-08-23 14:28