JSPatch 使用

JSPatch以小巧的体积做到了让JS调用/替换任意OC方法,让iOS APP具备热更新的能力,在实现 JSPatch 过程中遇到过很多困难也踩过很多坑,有些还是挺值得分享的。废话不多说,直接搞起...

  • 1.首先把文件JSPatch放到你的项目,这就不细说了,我用的网络请求框架是ASI ,代码就以ASI为例了: 导入所需的框架,如果项目中已经有了就省事了

  • 2.这时还会报一个错误,就是找不到#import <libxml/HTMLparser.h>这个文件,在Build Settings --> 输入 "header search" 就行了,找到对应的Header Search Paths 添加目录"${SDK_DIR}/usr/include/libxml2"

  • 3.现在就算导入文件OK了,下面开始真正的集成,其实也非常的简单,在Appdelegate 的程序启动的方法添加如下代码

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //1.创建请求对象
    NSURL *url=[NSURL URLWithString:@"文件存放在服务器上的路径/demo.js"];
    ASIHTTPRequest *request=[ASIHTTPRequest requestWithURL:url];
    
    //2.设置下载文件保存的路径
      NSString *cachepath= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
      NSString *filename=[cachepath stringByAppendingPathComponent:@"demo.js"];
      request.downloadDestinationPath=filename;
      NSLog(@"%@",filename);
    
      //3.设置下载进度的代理
      request.downloadProgressDelegate=self;
    
      //4.发送网络请求(异步)
      [request startAsynchronous];
    
      //5.设置支持断点下载
      request.allowResumeForFileDownloads=YES;
    
        //6.下载完毕后通知
      [request setCompletionBlock:^{
      NSLog(@"文件已经下载完毕");
      [JPEngine startEngine];
      NSString *filename=[cachepath stringByAppendingPathComponent:@"demo.js"];
      NSString *script = [NSString stringWithContentsOfFile:filename encoding:NSUTF8StringEncoding error:nil];
      [JPEngine evaluateScript:script];
      }];
    return YES;
    }
    复制代码
  • 4.这是在正常的控制器里的代码

  • 5.这是上传到服务器上的代码(这是js代码,有兴趣的同学可以学习一下)

还有就是安全加密的问题,推荐看看这篇博客 你们最最期待的demo在这里!!!给力吧,别忘记给个star 啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值