美文网首页
JSPatch实现热修复

JSPatch实现热修复

作者: C_HPY | 来源:发表于2016-11-30 17:11 被阅读16次

对于苹果的app来说,虽然在提交审核上线前会经过严格的测试,但是还是要保证有重大bug的情况下能够及时进行热修复,把损失降到最低。
JSPatch gitHub链接地址,里面有详细使用说明。
在主控制器中添加一个按钮,实现点击方法:

- (IBAction)crashAction:(id)sender {
    NSArray *array = @[@1,@2];
    NSNumber *number = [array objectAtIndex:4];
    NSLog(@"%@",number);
}

很明显,点击就一定会闪退,这个就是模拟app中可能 出现的各种严重问题。我们要做的就是通过JSPatch框架,及时修复线上严重bug。
导入头文件
#import <JSPatch/JPEngine.h>
在app启动时调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //测试热修复
    [self testJSPatchHotFix];
    return YES;
}

- (void)testJSPatchHotFix
{
    //启动引擎
    [JPEngine startEngine];
    //弹框测试
    [JPEngine evaluateScript:@"\
     var alertView = require('UIAlertView').alloc().init();\
     alertView.setTitle('Alert');\
     alertView.setMessage('AlertView from js'); \
     alertView.addButtonWithTitle('OK');\
     alertView.show(); \
     "];

    //重写闪退的方法
    [JPEngine evaluateScript:@"defineClass('ViewController',{\
     crashAction: function(crashButton){\
     var redColor = require('UIColor').redColor();\
     crashButton.setBackgroundColor(redColor);\
     }\
     },{})"];
}

重新运行app,会发现可以弹出新增的alert框,并且点击button闪退现象消失,完美解决了问题。当然对于线上bug一般需要后端给.js文件下载地址,这里只是为了测试写了本地的js文件。
实际应用中可以这样从后台拿.js文件

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://cnbang.net/test.js"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
      NSString *script = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
      [JPEngine evaluateScript:script];
}];

Demo在这里

相关文章

  • JSPatch实现热修复

    对于苹果的app来说,虽然在提交审核上线前会经过严格的测试,但是还是要保证有重大bug的情况下能够及时进行热修复,...

  • JSPatch的基本使用及思考

    介绍 JSPatch是2015年由bang推出的能实现热修复的工具,只要在项目中引入极小的JSPatch引擎,就可...

  • 神经病院Objective-C Runtime住院第二天——消息

    前言 现在越来越多的app都使用了JSPatch实现app热修复,而JSPatch 能做到通过 JS 调用和改写 ...

  • JSPatch热修复

    今天写了一个jspatch的小demo,每一步都做了截图,如果不了解JSPatch,大家可自行百度。JSPatch...

  • JSPatch热修复

    首先,简单说一下,为什么要用JSPatch,做iOS开发的人都知道,一旦程序出现了紧急BUG,各种申请苹果的...

  • JSPatch热修复

    iOS如果线下出现bug, 这个好解决, 但如果线上出bug, 由于APP Store提交审核有时间限制, 修改完...

  • 使用JSPatch热修复指南

    JSPatch 是腾讯微信团队牛人bang开源的一种通过JavaScript调用iOS原生代码来实现热修复或者动态...

  • JsPatch学习(1)【使用篇】

    JsPatch的使用很多,简单介绍热修复功能。JsPatch【使用篇】 最简单的使用: 1、注册App 到JSPa...

  • iOS 动态化热修复方案

    iOS 动态化热修复方案 Warnning 前言 iOS热修复方案经过JSPatch事件后,也消停了很久。bang...

  • IOS热修复JSPatch

    概述 JSPatch是什么? JSPatch 是一个Github开源项目(https://github.com/b...

网友评论

      本文标题:JSPatch实现热修复

      本文链接:https://www.haomeiwen.com/subject/uhytmttx.html