hotfix_ios_demo/hotfix-ios-demo/ViewController.m (107 lines of code) (raw):

// // ViewController.m // hotfix-ios-demo // // Created by junmo on 2017/10/19. // Copyright © 2017年 junmo. All rights reserved. // #import <AlicloudHotFixDebug/AlicloudHotFixDebug.h> #import "ViewController.h" #import <AlicloudHotFix/AlicloudHotFix.h> #import "TestClass.h" @interface ViewController () <UITableViewDelegate, UITableViewDataSource> @property (nonatomic, strong) UITableView *tableView; @end static NSArray *tableViewGroupNames; static NSArray *tableViewCellTitleInSection; @implementation ViewController + (void)initialize { tableViewGroupNames = @[ @"补丁测试", @"补丁加载", @"补丁调试工具" ]; tableViewCellTitleInSection = @[ @[ @"补丁加载测试" ], @[ @"拉取补丁", @"删除下载补丁" ], @[ @"加载本地补丁文件", @"二维码扫描" ] ]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self initTableView]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)initTableView { self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20) style:UITableViewStyleGrouped]; self.tableView.delegate = self; self.tableView.dataSource = self; [self.view addSubview:self.tableView]; } - (void)showAlert:(NSString *)title content:(NSString *)content { if ([NSThread isMainThread]) { UIAlertController *alertVc = [UIAlertController alertControllerWithTitle:title message:content preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]; [alertVc addAction:cancel]; [UIApplication.sharedApplication.delegate.window.rootViewController presentViewController:alertVc animated:YES completion:nil]; } else { dispatch_async(dispatch_get_main_queue(), ^{ UIAlertController *alertVc = [UIAlertController alertControllerWithTitle:title message:content preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]; [alertVc addAction:cancel]; [UIApplication.sharedApplication.delegate.window.rootViewController presentViewController:alertVc animated:YES completion:nil]; }); } } #pragma mark TableView 数据源设置 /* Section Num */ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return tableViewGroupNames.count; } /* Cell Num Each Section */ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[tableViewCellTitleInSection objectAtIndex:section] count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellId = [NSString stringWithFormat:@"cellId-%ld-%ld", (long)indexPath.section, (long)indexPath.row]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellId]; } cell.textLabel.text = [self cellTitleForIndexPath:indexPath]; return cell; } #pragma mark TableView 代理设置 /* Section Header Title */ - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return tableViewGroupNames[section]; } /* Click Cell */ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellTitle = [self cellTitleForIndexPath:indexPath]; if ([cellTitle isEqualToString:@"拉取补丁"]) { [self onLoadPatchClick]; } else if ([cellTitle isEqualToString:@"补丁加载测试"]) { [self onPatchTestClick]; } else if ([cellTitle isEqualToString:@"删除下载补丁"]) { [self onCleanPatchClick]; } else if ([cellTitle isEqualToString:@"二维码扫描"]) { [self onQrCodeClick]; } else if ([cellTitle isEqualToString:@"加载本地补丁文件"]) { [self onLoadLocalPatchFileClick]; } } - (NSString *)cellTitleForIndexPath:(NSIndexPath *)indexPath { return [[tableViewCellTitleInSection objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; } - (void)onPatchTestClick { TestClass *testClass = [[TestClass alloc] init]; [self showAlert:@"修复测试" content:[testClass output]]; } - (void)onLoadPatchClick { [[AlicloudHotFixService sharedInstance] loadPatch:^(BOOL res, id data, NSError *error) { if (res) { NSLog(@"Load patch success."); } else { NSLog(@"Load patch failed, error: %@", error); } }]; } - (void)onCleanPatchClick { [[AlicloudHotFixService sharedInstance] cleanPatch]; } - (void)onQrCodeClick { [AlicloudHotFixDebugService showDebug:self]; } - (void)onLoadLocalPatchFileClick { NSString *patchFilePath = [[NSBundle mainBundle] pathForResource:@"fix" ofType:@"lua"]; [AlicloudHotFixDebugService loadLocalPachFile:patchFilePath]; } @end