• Stars
    star
    122
  • Rank 292,031 (Top 6 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

一种轻量级的可以通过苹果审核的热修复方案,可以替代JSPatch的热修复方案。

HotFix

一种轻量级的可以通过苹果审核的热修复方案,可以替代JSPatch。


使用 Usage

  • 1.App启动时,用同步的方式调用接口,从服务器请求下发的JavaScript字符串
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //sync downloading js here
    //App启动时,主动同步请求服务端修复脚本,并执行修复方案
    //do something else
    return YES;
}
  • 2.执行修复 下载完成后,同步的方式执行修复:
[[HotFix shared] fix:js];

两步合到一起:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //sync downloading js here
    //App启动时,主动同步请求服务端修复脚本,并执行修复方案
    //这个里的js应该是通过同步的方式请求接口得到的,如:
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://xxxx/hotfix?access_token=xxxx"]];//调用获取修复脚本的接口
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSString *js = json[@"hotfix_js"];//这里只是举个例子
    if(js) {
        [[HotFix shared] fix:js];
    }
    //do something else
    return YES;
}

举个栗子🌰 For Example

ViewController里有一个这样的调用,参数为nil时会导致崩溃。

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self join:@"Steve" b:nil];
}
- (void)join:(NSString *)a b:(NSString *)b {
    NSArray *tmp = @[a,b,@"Good Job!"];
    NSString *c = [tmp componentsJoinedByString:@" "];
    printf("%s\n",[c UTF8String]);
}

@end

我们从服务器下发这段脚本来修复这个闪退(替换join:b:这个方法):

"fixInstanceMethodReplace('ViewController', 'join:b:', function(instance, originInvocation, originArguments){ 
    if (!originArguments[0] || !originArguments[1]) { 
        console.log('nil goes here'); 
    } else { 
        runInvocation(originInvocation); 
    } 
});"

App重新启动的时候,会以同步的方式加载到该脚本,并执行修复:

[[HotFix shared] fix:js];

这样原来的jion:b:方法就会被替换,当参数为nil时,就会打印nil gose here,若不为nil则正常执行。这样崩溃就解决了~

由于修复过程所有操作都是native的,所以不会影响苹果审核

安装 Installation

pod repo update
pod `HotFix`
  • 更多信息请参考该链接

More Repositories

1

FGDownloader

用于断点下载、任务队列、上传进度、下载进度
Objective-C
147
star
2

FGVideoEditor

swif版微信视屏裁剪,类似微信朋友圈视频裁剪方式的视频裁剪工具(video croping)
Swift
116
star
3

Custom-Camera

这是一个用AVFoundation框架制作的一个自定义相机Demo,包含了基本的点击屏幕对焦,以及焦距调整放缩功能。
Objective-C
22
star
4

XGFDownloader

FGGDwonloader的Swift版本,主要用于断点下载,后台下载,大文件下载
Swift
18
star
5

AVFoundationPlayer

用AVFoundation的AVPlayer做的一个小视频播放器,包括左滑快退,右滑快进,上滑音量加,下滑音量减等基本功能。
Objective-C
14
star
6

PlaneWar

Swift和SpriteKit编写的经典小游戏飞机大战
Swift
12
star
7

FGGAnimation

push视图时添加酷炫的转场动画
Objective-C
12
star
8

FGGTextField

实时监测文本格式是否正确的酷炫提示文本框
Objective-C
9
star
9

GeekMadeBySwiftUI

简单干货集中营的SwiftUI版本。网络请求用的Moya/RxSwift,网络请求回来的数据通过SwiftUI展示,SwiftUI网格视图用的第三方实现的。学习完官网的SwiftUI tutorials后的第一个实践项目
Swift
8
star
10

FGDoodlingBoard

涂鸦板,支持撤销、重做、清除、播放路径动画等,类似QQ涂鸦板。
Swift
8
star
11

CollectionHeaderView_Swift

用swift写的collectionView的demo,包含显示头部视图和脚部视图的实现方法
Swift
7
star
12

FGGAutomaticScrollView

一个方法创建自动循环滚动视图
Objective-C
7
star
13

FlappyBird

Swift和SpriteKit写的经典小游戏像素鸟Falppy Bird
Swift
7
star
14

FGSwiftAutoScrollView

Swift
6
star
15

FGGReachability

基于Reachability封装的网络判断,很好用,可以判断2G,2.75G,3G,4G,Wi-Fi,及可用,不可用等状态
Objective-C
6
star
16

Geek

Geek干货集中营,iOS swift版客户端
Swift
6
star
17

FGWebImage

An extension build in Swift for UIImageView and A light-weight framework of async loading image like SDWebImage.
Swift
5
star
18

FGHUD

An friendly and simple Swift HUD
Swift
5
star
19

FGHeaderView

[Swfit 3.0]一个方法一行代码实现表视图缩放
Swift
5
star
20

FCPopMenu

友好简易、可高度定制的下拉菜单。
Objective-C
5
star
21

FGTableHeaderView

一个方法实现表头部视图缩放
Objective-C
4
star
22

XMPPDemo

用Swift写的XMPP聊天的小Demo,登录注册、发消息、发文件、收消息、重连、踢账号、加好友等基础功能
Swift
4
star
23

FGSwiftUIImage

SwiftUI显示网络图片(SwiftUI web image likes SDWebImage)
Swift
4
star
24

SocketConnectDemo

iOS原生的Socket连接,跟服务器建立Socket连接,收发数据的小Demo
Objective-C
4
star
25

CoreDataDemo

CoreData的增删改查、筛选、排序等功能
Objective-C
3
star
26

FGToolKit

Swift便利工具集
Swift
3
star
27

SlideToShowLeftMenu

UITableView的左滑自定义多菜单Demo,兼容iOS 7
Objective-C
3
star
28

FGGSwtich

能改变大小的UISwitch-.-
Objective-C
3
star
29

FGGProgressHUD

简单好看的加载指示器
Objective-C
3
star
30

FGNetwork

A light networking kit for iOS with GET ,POST,file upload and multi files uploading supported
Objective-C
2
star
31

FGNumberSetpper

简易的选择数量控件,可以加、减、输入数量
Objective-C
2
star
32

USAction

类似SpriteKit的SKAction,你可以在UIKit上使用USAction,用法同SpriteKit的SKAction
Objective-C
2
star
33

UINavigationController-SmartPush

UINavigationController push到下一界面时自动隐藏底部UITabbar,pop回来时自动显示底部UITabbar
Objective-C
2
star
34

FGGCircleProgessView

简洁美观的环形进度条
Objective-C
2
star
35

3D_Touch_Demo

3DTouch的简单使用Demo
Objective-C
2
star
36

LeftMenu

实现UITableView的原生左滑多菜单自定义
Objective-C
2
star
37

FGGProgressHUD_Swift

FGGProgressHUD的Swift版本,简单好看的加载指示器
Swift
2
star
38

FGGWaterProgressView

球形水位高度效果的进度条
Objective-C
1
star
39

MultiDeleteAndMove

UITableView同时实现多选删除和移动两种功能
Objective-C
1
star
40

Insfgg99x.github.io

blog
HTML
1
star
41

DropDemo

一个简单的樱花飘落效果Demo,用SpriteKit实现的
Swift
1
star
42

FGAddressBook

获取手机通讯,监听手机通讯录的改变,并获取这些改变等。
Objective-C
1
star