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