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例子
网友评论