iOS_Pass iOS hotfix 热更新 JSPatch 个人服务搭建方案
2016-09-19 15:44
330 查看
JSPatch 个人服务搭建方案
JSPatch简介
个人服务搭建思路
客户端:
*1,按照上方的见解接入JSPatch的pods 或者 直接拖拽文件进自己的工程目录。*2,
- (void)applicationDidBecomeActive:(UIApplication *)application { //2.1,请求服务端的js脚本文件,成功后判断必要条件 //2.2, 符合条件执行对应路径下的js文件,不符合跳过此步骤 }
*3,紧急修复后,要尽快上线新的版本并修复bug。不要夸版本使用热更新。
服务端:
1,创建独立的文件区域存放对应app下对应版本的布丁js。如图:![](http://ww4.sinaimg.cn/mw1024/006bdQ7qjw1f7xqitlo1xj30ys0c2taj.jpg)
2,
{ "code":0, "msg":"success" "data":{ appVersion:1.1.0 jsVersion:1.0.2 jsContent:“ <font color=#0099ff size=5 face="黑体"> "require('UIView, UIColor') console.log('run success'); defineClass("CUAccountViewController", { tableView_numberOfRowsInSection: function(tableView, indexPath) { return 1; } }, {})</font>", "encryptedCode":"asldkfjalsjdfljsdkfjlsdkjfsldkf" } }
如上所示,
*1,客户端拿到这个json后,先根据appVersion和jsVersion判断是否要更新补丁。(需要一个本地化的存储之前的补丁版本)
*2,如果需要跟新补丁,将js先使用加密算法(md5,base64)等加密对应和encryptedCode做一个校验,确定是自己公司服务器发来的js,防止别人恶意攻击。
*3,将js文件写入到沙盒中保存。代码如下:
###2.2 NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory =[paths objectAtIndex:0]; NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; NSString *fileName = [NSString stringWithFormat:@"fix_%@.js",app_Version]; NSString *filePath =[documentsDirectory stringByAppendingPathComponent:fileName]; NSString * jsStr = @"jsStr"; //请求回来的js 代码 string格式 NSData * fileData = [jsStr dataUsingEncoding:NSUTF8StringEncoding]; BOOL success = [fileData writeToFile:filePath atomically:NO]; if (success) { [JPEngine startEngine]; [JPEngine evaluateScriptWithPath:filePath]; }
总结
我们再来复述一下思路。客户端:
*1,我们用JSpatch的源码,切记不是用她的sdk,并且跨过它的服务。
*2,每次应用被激活(applicationDidBecomeActive)就去服务端请求一下检查布丁的Json。
*3,请求到数据,根据json中的版本数据跟本地存储的版本数据判断是否需要更新补丁。
*4,如果需要更新,将js 代码与json中的校验码进行校验,通过后写入文件并使用JSpatch运行。
*5,如果本地存储有之前的js版本,为了防止更新失败记得更新成功后删除。
相关文章推荐
- iOS 动态更新方案对比:JSPatch vs React Native
- iOS 动态更新方案 JSPatch 与 React Native 的对比
- iOS 动态更新 修复bug jspatch wax总结。
- JSPatch – 动态更新iOS APP
- 价值100W的经验分享: 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
- iOS热更新技术---------------- JSPatch
- iOS- JSPatch 热更新
- 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
- ios 对于JSPatch的基本用法(热更新)
- JSPatch – 动态更新iOS APP
- JSPatch – 动态更新iOS APP
- JSPatch – 动态更新iOS APP
- IOS热修复之 JSPatch 实现方案
- iOS之热修复JSPatch 补丁更新管理
- 基于JSPatch平台实现iOS移动端的热更新机制
- JSPatch – 动态更新iOS APP
- JSPatch -- iOS hotfix
- 价值100W的经验分享: 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
- JSPatch – 动态更新iOS APP
- iOS热更新技术被苹果官方警告?涉及到RN、Weex、JSPatch!!!