iOS热修复框架JSPatch

什么是 JSPatch

Github:https://github.com/bang590/JSPatch

JSPatch是一个开源项目,只需要在项目里引入极小的引擎文件,就可以使用JavaScript调用任何Objective-C的原生接口,替换任意Objective-C原生方法。目前主要用于下发JS脚本替换原生Objective-C代码,实时修复线上bug。

例如线上 APP 有一段代码出现 bug 导致 crash:

@implementation JPTableViewController
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSString *content = self.dataSource[[indexPath row]];  //可能会超出数组范围导致crash
  JPViewController *ctrl = [[JPViewController alloc] initWithContent:content];
  [self.navigationController pushViewController:ctrl];
}
...
@end

可以通过下发这样一段JS代码,覆盖掉原方法,修复这个bug:

//JS
defineClass("JPTableViewController", {
  //instance method definitions
  tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
    var row = indexPath.row()
    if (self.dataSource().length > row) {  //加上判断越界的逻辑
      var content = self.dataArr()[row];
      var ctrl = JPViewController.alloc().initWithContent(content);
      self.navigationController().pushViewController(ctrl);
    }
  }
}, {})

除了修复bug,JSPatch也可以用于动态运营,实时修改线上APP行为,或动态添加功能。JSPatch 详细使用文档见 Github Wiki

什么是 JSPatch 平台

官网:https://jspatch.com

JSPatch需要使用者有一个后台可以下发和管理脚本,并且需要处理传输安全等部署工作,JSPatch平台帮你做了这些事,提供了脚本后台托管,版本管理,保证传输安全等功能,让你无需搭建一个后台,无需关心部署操作,只需引入一个SDK即可立即使用JSPatch

上一篇 Android自定义支持多层嵌套RadioButton的RadioGroup
下一篇 iOS微信支付接入(Swift)
目录
文章列表
1 Grafana插件扩展之世界地图安装
Grafana插件扩展之世界地图安装
2
MySQL修改编码
MySQL修改编码
3
Firebase推送通知服务端实现
Firebase推送通知服务端实现
4
Confluence使用常见问题解决
Confluence使用常见问题解决
5
Java模拟Form表单提交
Java模拟Form表单提交
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。