iOS hotfix方案

    jwolf 
3105  0  0   2016-9-26 13:06


    1.JsPatch 介绍

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, 和公钥验证脚本发送者的身份。

流程:

1.png

 

II 脚本版本管理

    后端针对不同的app版本,甚至是不同的app,提供唯一的脚本返回:

2.png

 

III 客户端处理逻辑

logic.png

后端代码: https://github.com/jwolfcn/JSPatch-Server

IOS端正在封装成静态库(使用的是本文写作时最新版本的jspatch,有兴趣的可以咨询-------liangjames@icloud.com

本人学术有限,如有错失纰漏欢迎留言指出,如果觉得文章有用可以打赏支持一下,谢谢:

支付宝                           微信: 

向我付款(支付宝)     向我付款(微信)