git 地址

github.com/StevenWT/hy…

hy-bridge

Bridge for sending messages between Android Java and JavaScript in WebViews

前言

项目需要一个简单的hybrid框架。参考已经存在的开源项目,修改了bridge的通信方式,不会丢消息,兼容性好。并进行了插件,loading等使用友好性封装。代码比较简单,注释相对详细。几天完成的模块,想要简单的hybrid项目可以参考。

注入

页面通过固定的URL,可以实现注入Bridge JS,默认为 iframe src="https://__get__bridge__/mobile/bridge.html, 譬如 <iframe src="https://__get__bridge__/mobile/bridge.html" style="display:none"></iframe>

前端调用

  1. 页面通过判断 NJWebViewJavascriptBridgeReady 事件来获取bridge对象,使用方法:
  function connectWebViewJavascriptBridge(callback) {if (window.NJWebViewJavascriptBridge) {callback(NJWebViewJavascriptBridge)} else {document.addEventListener('NJWebViewJavascriptBridgeReady', function() {callback(NJWebViewJavascriptBridge)}, false)}}
  1. Bridge包含几种调用客户端的方法:

    • registerHandler(handlerName, handler) 注册事件,捕获客户端该handlerName的调用
    • callHandler(handlerName, data, responseCallback) 调用客户端,传递data参数,并处理回调。

客户端API

  1. 客户端可以自行设计插件,插件分两种,一种为全局框架插件(插件类全局一个实例),一种为每个WebView独立的插件,譬如弹出Toast为全局插件,业务级的下一步为单一场景使用的插件.
  2. 客户端包含几种调用前端或者接收的方法
    • 初始化HyEnv,例如debug控制
    • 注册全局插件HyGlobalPluginManager
    • HyWebView WebView的封装类,js通信,桥,插件,loading控制。

策略设计

  1. 客户端加载页面出Loading,30s后前端没有主动调用disMissLoading,则客户端出重试按钮。点击重试刷新页面。
  2. 客户端SSL错误,页面给出提示,用户判断是否继续。

通信数据格式

  1. 发送的数据:JSON对象即可

  2. 返回的数据:固定格式嵌套返回结果。

    例如获取native所有插件的PluginList,返回的结果:

{"Outcome": "Success","Message": "","Data": {"Toast": 1, // 版本号"Back": 1}
}
返回key值 名称 说明 其他
Outcome 插件功能是否成功 插件功能是否成功:Success(成功)、Fail(失败)
Message 错误信息或者错误码 可以用来传递错误信息或者错误码
Data 插件运行成功真正返回的数据(JSON格式) JSON对象,插件返回的结果

通信原理简要说明

  1. native->js 4.4以下:loadUrl() 4.4或者以上:evaluateJavascript()
  2. js->native web通过iFrame 客户端进行拦截得到数据

参考资料

  1. github.com/jesse01/Web…

    项目最初版本是基于这个代码,通信部分存在兼容性问题,修改了bridge的通信方式。感谢作者。

  2. github.com/lzyzsd/JsBr…

  3. github.com/pedant/safe…

  4. github.com/marcuswesti…

    ios可以使用这个项目。简单修改可以和当前android项目相匹配。

转载于:https://juejin.im/post/5a547d1951882573443c8f8d

hy-bridge:一款简洁安全可靠的Hybrid框架相关推荐

  1. 写一个易于维护使用方便性能可靠的Hybrid框架(一)—— 思路构建

    写一个易于维护使用方便性能可靠的Hybrid框架(二)-- 插件化 写一个易于维护使用方便性能可靠的Hybrid框架(三)-- 配置插件 前言 本来上一篇博文写完,我就告诉自己,这是最后一篇,之后不再 ...

  2. 一款简洁大气的jquery日期日历插件

    本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址: http://keleyi.com/a/bjad/e ...

  3. 粽子SHOP-粽子商城官网-一款简洁大气的官网源码

    介绍: 一款简洁大气的官网源码,无后台,直接上传服务器或主机即可,可自行编辑内容非常实用的个人介绍页面,大家需要的自行下载! 网盘下载地址: http://zijieyunpan.com/OSdKfa ...

  4. Sandy Bridge 12款双核心产品正式入列 Core i7-2620M Core i5-2540M

    Sandy Bridge 12款双核心产品正式入列 ugmbbc发布于 2011-02-23 12:28:32| 次阅读 字体:大 小 打印预览 Intel今天再度更新官方处理器价格表,加入了多达12 ...

  5. 20款简洁独特的logo设计

    日期:2012-5-10  来源:GBin1.com 说起logo设计,到底什么样的设计才可以算得上是好的设计?是复杂多样.色彩丰富的?还是有视觉冲击力的?让我们试着回想一下我们常看到的那些 logo ...

  6. Web-app,一款简洁高效率绿色html编辑器-安卓软件

    简介: Web-app,一款简洁高效绿色html编辑器,即写即保存,支持自定义符号栏,还能打包成app使用,多框架js运用,随时预览效果 网盘下载地址: http://kekewl.cc/i5o3DF ...

  7. 又一款简洁实用的个人博客系统

    [公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天推荐的这个项目是「van-blog」,一款简洁实用优雅的高性能个人博客系统. VanBlog 支 ...

  8. 推荐一款简洁的浏览器标签页

    [贰柒壹]推荐一款简洁的浏览器标签页   今天就介绍一些我自己在用的浏览器主页,效果图如下:   主页可以说是相当简洁了,界面很像是IOS应用,就是因为这款标签页的颜值,让我一直用到现在,接下来介绍一 ...

  9. BearSimple - 一款简洁的Typecho主题

    BearSimple主题是什么? BearSimple是一款简洁但又不是完全简洁的Typecho主题,为什么说不是完全简洁呢,因为这款主题除了前台简洁外其他地方一点也不简洁,就如同..打个比方就是外看 ...

最新文章

  1. 荣耀com.huawei.android,荣耀阅读(com.huawei.hnreader) - 8.1.0.309 - 应用 - 酷安
  2. python【蓝桥杯vip练习题库】ADV-183分苹果(差分数组 离线区间)
  3. MATLAB实战系列(二十二)-matlab三维图形绘制案例最全集锦(毕设和数学建模必看)
  4. Java问题排查工具箱
  5. DCOM 示例:演示如何远程调用 COM 对象
  6. 联机装箱问题 java_Java实现 洛谷 P1049 装箱问题
  7. win8笔记本关闭小键盘
  8. java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql
  9. 几十种编程语言说Hello World
  10. saltstack管理七之minion端备份
  11. ABAP 练习用航班数据
  12. 删除word中单独一页的页眉线和前后有页眉但在中间加一页空白页
  13. 形态学空间格局分析(MSPA)—ArcGIS结合Guidos软件
  14. EGO1—实现计数器74HC163
  15. 您有一份《七夕安全须知》待查收
  16. Python 中的列表(二)
  17. 三井化学将扩大LUCANT™产能
  18. 华为18级工程师历时五年总结出趣谈网络协议(大牛精讲)
  19. 基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件
  20. div适应屏幕垂直居中的多种解决方案

热门文章

  1. vba遍历字符串_VBA7种文档遍历法
  2. 利用js本地读取excel文件
  3. Magento 手机支付 (支付宝无线支付)
  4. 微软小冰:全双工语音对话详解
  5. linux怎么读(中文读音发音)
  6. 解决Win11更新后C盘告急
  7. matlab db dbm dbfs,dbfs(dbfs和dbm的换算)
  8. 【找规律】codeforces 710 F
  9. 固定于计算机主机箱中承载,计算机主机完整
  10. void *指针是什么含义