91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hybrid App技術的示例分析

發布時間:2021-07-24 10:11:48 來源:億速云 閱讀:230 作者:小新 欄目:web開發

這篇文章給大家分享的是有關Hybrid App技術的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

背景

隨著Web技術的發展和移動互聯網的發展,Hybrid技術已經成為一種前端開發的主流技術方案。那什么是Hybrid App呢?

Hybrid App(混合模式移動應用)是指介于web-app、native-app這兩者之間的app,兼具" Native App良好用戶交互體驗的優勢 "和" Web App跨平臺開發的優勢 "。

總的來說,就是既具有APP的體驗和性能,又具有Web靈活的開發模式和跨平臺開發能力。

現有的技術方案

1、H5 + JSBridge,通過JSBridge完成H5和Native的通信,賦予H5一定的端能力。是一種基于WebView UI的解決方案。

2、React-Native,進一步通過JSbridge將js解析為虛擬DOM傳遞到Native,并使用原生進行渲染。

3、小程序解決方案,采用雙線程的渲染機制,將渲染層WebView和邏輯層JavaScriptCore形成獨立的模塊,通過Native進行通信(setData),邏輯層的網絡請求也會由Native進行轉發。在UI方面,采用的是WebView和原生相結合的方式。

技術原理

本文將從jsbridge的原理、實現、雙向通信、接入方式和H5的嵌入方式進行詳細闡述。

jsbridge的原理

客戶端能對WebView中請求進行攔截,都有相應的API:

Android:

// Android: shouldoverrideurlloading 
public boolean shouldOverrideUrlLoading(WebView view, String url){
  //讀取到url后自行進行分析處理
  
  //如果返回false,則WebView處理鏈接url,如果返回true,代表WebView根據程序來執行url
  return true;
}

IOS:

// IOS: shouldStartLoadWithRequest 
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  NSURL *url = [request URL];
   
  NSString *requestString = [[request URL] absoluteString];
  //獲取url scheme后自行進行處理

因此,在頁面中可以通過iframe加載src的方式觸發相應的捕獲函數,在捕獲函數中可以對url中的參數進行解析;此外,Android還可以通過重寫OnJSPrompt方法,對調用Prompt進行攔截,同樣能實現通信的目的。

示例:

調起ios端:

function iosInvoke(scheme) {
  var elem = document.createElement('iframe');
  var body = document.body || document.getElementsByTagName('body')[0];
  elem.style.display = 'none';
  elem.src = scheme;
  body.appendChild(elem);
  setTimeout(function () {
    body.removeChild(elem);
    elem = null;
  }, 0);
}

調起android端:

function androidInvoke(scheme) {
  var androidJsBridge = window.Bdbox_android_jsbridge;
  if (androidJsBridge && androidJsBridge.dispatch) {
    androidJsBridge.dispatch(scheme);
  } else {
    var re = window.prompt('BdboxApp:' + JSON.stringify({
      obj: 'Bdbox_android_jsbridge',
      func: 'dispatch',
      args: [scheme]
    }));
    return re;
  }
}

協議制定URL Scheme

URL Scheme是什么

由于蘋果的app都是在沙盒中,相互是不能訪問數據的。但是蘋果還是給出了一個可以在app之間跳轉的方法:URL Scheme。簡單的說,URL Scheme就是一個可以讓app相互之間可以跳轉的協議。

每個app的URL Scheme都是不一樣的,如果存在一樣的URL Scheme,那么系統就會響應先安裝那個app的URL Scheme,因為后安裝的app的URL Scheme被覆蓋掉了,是不能被調用的。

設置URL Scheme

xxxapp://communication?args=xx

如何進行雙向通信

雙向通信主要是H5和Native的雙向通信過程以及參數傳遞、回調執行。

H5通知Native:

H5通知Native的方式主要有:

  • 調用prompt/console/alert,調用時進行參數傳遞,端進行攔截重寫

  • URL Scheme跳轉攔截,將參數放在請求URL上

  • API掛載,通過Navtive獲取js執行環境,將相應的api掛載在js上,供h6調用

Native通知H5:

回調機制,在向Native傳遞信息時,將回調函數也傳遞,Native在調用完成后,使用js執行環境執行回調函數

接入方式

jsbridge的接入,端方面的jsbridge和h6方面的jsbridge

嵌入方式

h6的嵌入方式:

  • 直接代碼,直接將H5代碼css、html、js放入端目錄下,以file協議的方式訪問,優點是訪問快速,缺點是迭代不方便。

  • 線上地址,以http協議訪問,使用webview打開url形式,相較于代碼嵌入的方式來說,速度比較慢,依賴網絡傳輸速度;優點是迭代快速

感謝各位的閱讀!關于“Hybrid App技術的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

体育| 汉川市| 济宁市| 东丽区| 宜兰市| 建瓯市| 呼玛县| 佛教| 芷江| 鹰潭市| 城口县| 博野县| 卫辉市| 米脂县| 宁武县| 商城县| 射洪县| 双桥区| 蒲城县| 紫阳县| 措勤县| 墨竹工卡县| 曲沃县| 正蓝旗| 塘沽区| 手机| 屏山县| 德保县| 铜陵市| 高碑店市| 中卫市| 庄浪县| 绩溪县| 乳源| 安徽省| 青龙| 安溪县| 白河县| 垣曲县| 星子县| 越西县|