JSPatch (源码: https://github.com/bang590/JSPatch )可以让你用 JavaScript 书写原生 iOS APP。只需在项目引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug。
2. 引用目的
利用JsPatch 动态修复bug的特性,为app 提供不升级版本而修复“线上”bug的能力。
3. 接入须知
JsPatch 修复脚本必须通过本地环境测试才能部署上线。
JsPatch 有覆盖原生代码的能力,为了跟踪修复脚本可能带来的程序行为的改变,修复的脚本需有完整的版本管理。这里的版本并非指app的版本,更切实地表达,应该是针对app某个版本,修复脚本也应该具有相应的版本管理。
JsPatch 修复脚本下达到 app 客户端的过程须经过签名验证,有https服务的可直接使用https, 没有https的须使用相关加密算法进行身份校验。防止被破坏者篡改脚本从而对app 造成破坏。JsPatch 有相关收费的服务,本文提供比较简单,低成本的接入方案概要。
4. 方案概要
I 身份校验
使用不对称算法RSA校验身份,服务器端先使用Md5哈希生成脚本文件的摘要串,再使用私钥对该串加密生成sig 串,客户端请求修复脚本的时候,服务端返回脚本的同时带上生成的sig,客户端拿到了脚本和sign ,利用相同的哈希算法生成脚本的摘要,再利用本地的摘要,sign, 和公钥验证脚本发送者的身份。
流程:
II 脚本版本管理
后端针对不同的app版本,甚至是不同的app,提供唯一的脚本返回:
III 客户端处理逻辑
后端代码: https://github.com/jwolfcn/JSPatch-Server
IOS端正在封装成静态库(使用的是本文写作时最新版本的jspatch,有兴趣的可以咨询-------liangjames@icloud.com
本人学术有限,如有错失纰漏欢迎留言指出,如果觉得文章有用可以打赏支持一下,谢谢:
支付宝 微信: