探索Hybrid-APP技术原理

作者 : 开心源码 本文共2422个字,预计阅读时间需要7分钟 发布时间: 2022-05-13 共205人阅读

探索Hybrid-APP技术原理
author: @TiffanysBear

背景

随着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上,详细的文章详情 URL Scheme
  • API挂载,通过Navtive获取js执行环境,将相应的api挂载在js上,供h5调用

Native通知H5:

  • 回调机制,在向Native传递信息时,将回调函数也传递,Native在调用完成后,使用js执行环境执行回调函数

接入方式

  • jsbridge的接入,端方面的jsbridge和h5方面的jsbridge

嵌入方式

h5的嵌入方式:

  • 直接代码,直接将H5代码css、html、js放入端目录下,以file协议的方式访问,优点是访问快速,缺点是迭代不方便。
  • 线上地址,以http协议访问,使用webview打开url形式,相较于代码嵌入的方式来说,速度比较慢,依赖网络传输速度;优点是迭代快速

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 探索Hybrid-APP技术原理

发表回复