hy-bridge:一款简洁安全可靠的Hybrid框架
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>
前端调用
- 页面通过判断
NJWebViewJavascriptBridgeReady
事件来获取bridge对象,使用方法:
function connectWebViewJavascriptBridge(callback) {if (window.NJWebViewJavascriptBridge) {callback(NJWebViewJavascriptBridge)} else {document.addEventListener('NJWebViewJavascriptBridgeReady', function() {callback(NJWebViewJavascriptBridge)}, false)}}
- Bridge包含几种调用客户端的方法:
registerHandler(handlerName, handler)
注册事件,捕获客户端该handlerName的调用callHandler(handlerName, data, responseCallback)
调用客户端,传递data参数,并处理回调。
客户端API
- 客户端可以自行设计插件,插件分两种,一种为全局框架插件(插件类全局一个实例),一种为每个WebView独立的插件,譬如弹出Toast为全局插件,业务级的下一步为单一场景使用的插件.
- 客户端包含几种调用前端或者接收的方法
- 初始化HyEnv,例如debug控制
- 注册全局插件HyGlobalPluginManager
- HyWebView WebView的封装类,js通信,桥,插件,loading控制。
策略设计
- 客户端加载页面出Loading,30s后前端没有主动调用disMissLoading,则客户端出重试按钮。点击重试刷新页面。
- 客户端SSL错误,页面给出提示,用户判断是否继续。
通信数据格式
发送的数据:JSON对象即可
返回的数据:固定格式嵌套返回结果。
例如获取native所有插件的PluginList,返回的结果:
{"Outcome": "Success","Message": "","Data": {"Toast": 1, // 版本号"Back": 1}
}
返回key值 | 名称 | 说明 | 其他 |
---|---|---|---|
Outcome | 插件功能是否成功 | 插件功能是否成功:Success(成功)、Fail(失败) | |
Message | 错误信息或者错误码 | 可以用来传递错误信息或者错误码 | |
Data | 插件运行成功真正返回的数据(JSON格式) | JSON对象,插件返回的结果 |
通信原理简要说明
- native->js 4.4以下:loadUrl() 4.4或者以上:evaluateJavascript()
- js->native web通过iFrame 客户端进行拦截得到数据
参考资料
github.com/jesse01/Web…
项目最初版本是基于这个代码,通信部分存在兼容性问题,修改了bridge的通信方式。感谢作者。
github.com/lzyzsd/JsBr…
github.com/pedant/safe…
github.com/marcuswesti…
ios可以使用这个项目。简单修改可以和当前android项目相匹配。
转载于:https://juejin.im/post/5a547d1951882573443c8f8d
hy-bridge:一款简洁安全可靠的Hybrid框架相关推荐
- 写一个易于维护使用方便性能可靠的Hybrid框架(一)—— 思路构建
写一个易于维护使用方便性能可靠的Hybrid框架(二)-- 插件化 写一个易于维护使用方便性能可靠的Hybrid框架(三)-- 配置插件 前言 本来上一篇博文写完,我就告诉自己,这是最后一篇,之后不再 ...
- 一款简洁大气的jquery日期日历插件
本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址: http://keleyi.com/a/bjad/e ...
- 粽子SHOP-粽子商城官网-一款简洁大气的官网源码
介绍: 一款简洁大气的官网源码,无后台,直接上传服务器或主机即可,可自行编辑内容非常实用的个人介绍页面,大家需要的自行下载! 网盘下载地址: http://zijieyunpan.com/OSdKfa ...
- Sandy Bridge 12款双核心产品正式入列 Core i7-2620M Core i5-2540M
Sandy Bridge 12款双核心产品正式入列 ugmbbc发布于 2011-02-23 12:28:32| 次阅读 字体:大 小 打印预览 Intel今天再度更新官方处理器价格表,加入了多达12 ...
- 20款简洁独特的logo设计
日期:2012-5-10 来源:GBin1.com 说起logo设计,到底什么样的设计才可以算得上是好的设计?是复杂多样.色彩丰富的?还是有视觉冲击力的?让我们试着回想一下我们常看到的那些 logo ...
- Web-app,一款简洁高效率绿色html编辑器-安卓软件
简介: Web-app,一款简洁高效绿色html编辑器,即写即保存,支持自定义符号栏,还能打包成app使用,多框架js运用,随时预览效果 网盘下载地址: http://kekewl.cc/i5o3DF ...
- 又一款简洁实用的个人博客系统
[公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天推荐的这个项目是「van-blog」,一款简洁实用优雅的高性能个人博客系统. VanBlog 支 ...
- 推荐一款简洁的浏览器标签页
[贰柒壹]推荐一款简洁的浏览器标签页 今天就介绍一些我自己在用的浏览器主页,效果图如下: 主页可以说是相当简洁了,界面很像是IOS应用,就是因为这款标签页的颜值,让我一直用到现在,接下来介绍一 ...
- BearSimple - 一款简洁的Typecho主题
BearSimple主题是什么? BearSimple是一款简洁但又不是完全简洁的Typecho主题,为什么说不是完全简洁呢,因为这款主题除了前台简洁外其他地方一点也不简洁,就如同..打个比方就是外看 ...
最新文章
- 荣耀com.huawei.android,荣耀阅读(com.huawei.hnreader) - 8.1.0.309 - 应用 - 酷安
- python【蓝桥杯vip练习题库】ADV-183分苹果(差分数组 离线区间)
- MATLAB实战系列(二十二)-matlab三维图形绘制案例最全集锦(毕设和数学建模必看)
- Java问题排查工具箱
- DCOM 示例:演示如何远程调用 COM 对象
- 联机装箱问题 java_Java实现 洛谷 P1049 装箱问题
- win8笔记本关闭小键盘
- java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql
- 几十种编程语言说Hello World
- saltstack管理七之minion端备份
- ABAP 练习用航班数据
- 删除word中单独一页的页眉线和前后有页眉但在中间加一页空白页
- 形态学空间格局分析(MSPA)—ArcGIS结合Guidos软件
- EGO1—实现计数器74HC163
- 您有一份《七夕安全须知》待查收
- Python 中的列表(二)
- 三井化学将扩大LUCANT™产能
- 华为18级工程师历时五年总结出趣谈网络协议(大牛精讲)
- 基于Java毕业设计学习类视频网源码+系统+mysql+lw文档+部署软件
- div适应屏幕垂直居中的多种解决方案