android js桥接,聊一聊桥接(JSBridge)的原理(下)

本文介绍了JSBridge的基本原理,包括Native如何调用Web以及Web如何调用Native。通过URLSchema拦截和引入JSAPI两种方式实现通信。同时,讨论了完整的调用过程,涉及回调函数的实现。最后提到了开源的JSBridge库DSBridge,它是实现Native与Web双向通信的重要工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着上篇我们继续!

三.JSBridge的完成基本原理。

互联网端和Native能够与Client/Server方式相较为,当互联网端启用当地插口时,如同Client向Server端推送一个要求一样,JSBridge在这儿饰演了与HTTP协议书类似的人物角色,完成JSBridge关键有二点:

把Native端当地插口封裝成JavaScript插口。

将互联网端JavaScript插口封裝成本费地插口。

7b45640ae382d564b2091b05bfcb001a.png

3.1 Native->Web。

第一,Native端启用Web端,这一点非常简单,JavaScript做为一种表述语言表达,较大的特性便是能够在一切時间、一切地址根据编译器实行JS编码,因而能够将JavaScript编码字符串拼接起來,键入JS在线解析实行,JS在线解析便是webView。

3.2 Web->Native。

互联网启用互联网端关键有二种方法。

3.2.1提取网页页面要求的URLSchema。

URLSchema是类型URL的要求文件格式,文件格式以下:

:///?#fragment

您能够订制JSBridge通讯的URLSchema,比如jsbridge://showToast?text=hello。

网Native加载WebView后,Web推送的全部要求都将根据WebView部件,因而Native能够调用WebView中的方式 ,提取Web进行的要求,并分辨要求文件格式:

假如合乎大家订制的URLSchema,剖析URL,得到有关实际操作和实际操作,随后启用当地Native方式 。

假如不符大家订制的URLSchema,大家会立即分享并规定真实的服务项目。

互联网推送URL要求的方式 有下列几类:

a标签

location.href

使用iframe.src

发送ajax请求

这些方法,a标签需要用户操作,location.href可能会引起页面的跳转丢失调用,发送ajax请求Android没有相应的拦截方法,所以使用iframe.src是经常会使用的方案

安卓提供了shouldOverrideUrlLoading方法拦截

IOSUIWebView使用shouldStartLoadWithRequest,

IOSWKWebView则使用decidePolicyForNavigationAction

这类方式 从初期就存有,兼容模式非常好。但因为是根据URL的,长短比较有限,不形象化,数据类型比较有限,创建要求必须時间。

3.2.2向Webview引入JSAPI。

该方式 根据webView出示的插口,App将Native的有关插口引入JS的Context(window)的目标中,一般来说该目标内的方式 名与Native的有关方式 名同样,web方能够立即在全世界window下应用该全世界JS目标

安卓系统(4.2+)出示安卓系统JavascriptInterface引入:

e8e6cf14c1fd334ecafa42508ab4a788.png

立即在互联网端启用此方式 :

window.NativeBridge.showNativeDialog('hello');

3.3启用带到调。

之上提及了Native,Web中间的双向通信二种方法,可是立在一端還是一个单边通讯的全过程,例如立在Web的视角:Web调用Native的方法,Native立即开展有关实际操作,可是不可以将結果退还给Web,可是在具体应用中,常常必须退还实际操作結果,即JS回调函数。

因而在对端实际操作并回到結果,有键入有輸出才算是详细的启用,那麼怎样完成呢?

实际上,它能够依据之前的单边通讯来完成。在我们启用一端时,我们在主要参数中加上一个callbackId标识相对的回调函数。对端接受到启用要求后,开展操作过程。如果有callbackId,对端将再度启用,結果和callbackId将回到。该端能够依据callbackId配对相对的回调函数,并将結果键入实行。

四.开源系统JSBridge。

完成详细的JSBridge相对性繁杂,必须考虑到一些中低端型号规格的兼容模式和同歩异步调用。幸运的是,早已有开源系统JSBridge供大家立即应用:

DSBridge关键以引入API的方式,DSBridgeforAndroid,DSBridgeforIOS。

JsBridge,主要是提取URLSchema,JsBridge。

以DSBridge-安卓系统为例子:

22bcc9c8c73264db3c6f2988f2025144.png

d93c9b108e609352246eb34ebc29898c.png

Hybrid开发设计是当今移动智能终端开发设计的流行技术性选择项,在其中Native和Web终端设备的双向通信离不了JSBridge。

在其中,表面中,Native调用Web端是立即在JS的Context上实行JS编码,而Native端启用Native端有二种方式 ,一种是根据URLSchema的阻拦实际操作,另一种是将Api引入JS的Context(window),在其中引入Api是现阶段最好是的挑选。全启用是双向通信,必须一个回调函数作用,技术性完成上应用了2次单边通讯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值