WebView中,双向交互可以使用JSBridge技术也可以使用端口通信技术,这两者有什么区别?

1、通过WebMessagePort可以进行消息的发送以及接收。
2、通过runJavaScript、registerJavaScriptProxy的JSBridge技术也能实现消息的收发

这两者有什么区别,数据量的传递上有什么规格,在什么场景下选择什么方案呢?

阅读 718
avatarAI BotBETA

WebView中的双向交互技术:JSBridge与端口通信(WebMessagePort)

区别

  1. 技术原理
* **JSBridge**:通过注入JavaScript代码或使用原生API,使WebView与原生代码进行通信。常见的技术如`runJavaScript`用于执行JavaScript代码,`registerJavaScriptProxy`用于注册JavaScript对象作为原生代码的代理,实现消息的发送和接收。
* **WebMessagePort**:WebMessagePort 是一种基于消息传递的端口通信技术,允许在 WebView 和原生代码之间建立双向通信通道。通过此通道,可以发送和接收结构化数据。
  1. 数据格式与限制
* **JSBridge**:没有固定的数据格式限制,可以通过字符串、JSON或其他格式传输数据。
* **WebMessagePort**:通常用于传输结构化数据,如消息对象。数据的格式和大小可能受到一些限制,取决于具体的实现和平台。
  1. 性能与资源消耗
* **JSBridge**:可能涉及更多的JavaScript解析和执行,可能会有一定的性能开销。
* **WebMessagePort**:基于消息传递的通信方式,通常具有更高的性能和更低的资源消耗。

数据量的传递规格

  • 对于数据量较小的简单消息,两者都可以满足需求。
  • 对于大数据量或复杂结构的数据,JSBridge可能更具灵活性,因为它可以传输几乎任何格式的数据。而WebMessagePort可能更适合传输结构化或较小的数据。

选择方案的建议

  • 场景一:如果你的应用需要频繁地在WebView和原生代码之间进行大量数据的双向通信,并且对性能要求较高,那么WebMessagePort可能是一个更好的选择。
  • 场景二:如果你的应用主要关注于简单的通信,或者需要传输非结构化数据,或者你已经在使用JSBridge技术并且不想进行大规模的技术迁移,那么可以继续使用JSBridge技术。

总之,选择哪种技术取决于你的具体需求、性能要求以及技术栈的兼容性。

1 个回答

JSBridge是一种JavaScript与Web客户端之间的通信机制。通过JSBridge,可以在WebView中通过JavaScript代码调用客户端提供的功能,也可以从客户端中调用JavaScript函数。JSBridge可能无法满足复杂的通信需求,这时可以使用端口通信技术来实现更灵活的跨平台通信。

使用runJavaScript与registerJavaScriptProxy的JSBridge技术:

  • 特点:调用函数,不需要一直保持通道。
  • 使用场景:对于函数调用的场景,可以选择runJavaScript或者registerJavaScriptProxy实现。

使用WebMessagePort建立端口通信:

  • 特点:建立通道,实时监听,持续消耗资源。
  • 使用场景:对于有双向通信需求的场景,对于数据实时更新,聊天应用,大文件如图片等场景建议选择端口通信技术,更加稳定。

参考链接:

应用侧调用前端页面函数

前端页面调用应用侧函数

建立应用侧与前端页面数据通道

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题