美文网首页
iOS 热更新JSPatch

iOS 热更新JSPatch

作者: 晴朗Nic | 来源:发表于2021-07-22 11:21 被阅读0次

    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

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