美文网首页MD5加密解密 runtime
iOS ● App热更新——JSPatch 平台介绍

iOS ● App热更新——JSPatch 平台介绍

作者: MyiOS | 来源:发表于2016-10-14 16:22 被阅读139次
    什么是 JSPatch?

    JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 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 平台?

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

    JSPatch SDK 与 github 上开源代码的关系?

    Github 开源的是 JSPatch 核心代码,使用完全免费自由,若打算自己搭建后台下发 JSPatch 脚本,可以直接使用 github 上的核心代码,与 JSPatch 平台上的 SDK 无关。JSPatch 平台的 SDK 在核心代码的基础上增加了向平台请求脚本/传输解密/版本管理等功能,只用于这个平台。

    JSPatch 平台速度和稳定性如何?

    通过 JSPatch 平台上传的脚本文件都会保存在七牛云存储上,客户端 APP 只跟七牛服务器通讯,支持高并发,CDN分布全国,速度和稳定性有保证。

    JSPatch 基础用法:https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95
    JSPatch 文档:http://www.jspatch.com/Docs/intro

    相关文章

      网友评论

        本文标题:iOS ● App热更新——JSPatch 平台介绍

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