iOS 热更新JSPatch

1.倒入核心文件的名字JPEngine.m、JPEngine.h、JSPatch.js。

2.在AppDelegate.m的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions注入相对应的JS代码用于修复或者增加功能。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    ///1.初始化
    [JPEngine startEngine];
    ///2.获取本地文件
    NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"];
    NSString *script = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil];
    ///注入js相关要热更新的代码。
    [JPEngine evaluateScript:script];
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    ViewController *viewVC = [[ViewController alloc] init];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewVC];
    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

3. 相关用来热跟更新的JS代码语言规则:JS代码语言规则

4.可以用来直接OC转用于热更新JS代码正确率大概80%,转化完成之后还需要手动修改一下即可以用使用:OC转用于热更新JS

5.热更新在App Store审核的时候可能会遇到一些麻烦,怎样通过苹果审核以下有几点建议:

(1).脚本下发使用加密传输,避免有人恶意修改下发的脚本代码。
(2).脚本文件上传会经过审核处理,如果发现涉及到私有API调用将不允许发布 。
(3).由于苹果审核时一般采用机器扫描识别代码中JSPatch框架的API,所以在SDK中使用了代码混淆,避免苹果审核时机器识别到。

这是自己写一个例子作为参考:JSPatch例子

你可能感兴趣的:(iOS 热更新JSPatch)