1最简单最基本的
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
2 引用 导入工程的文件 记得放入对应的js css 文件
NSString * htmlPath = [[NSBundle mainBundle] pathForResource:@"mall" ofType:@"html"];
NSString * htmlCont = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil]; // 获取当前应用的根目录
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path]; // 通过baseURL的方式加载的HTML
// 可以在HTML内通过相对目录的方式加载js,css,img等文件
[self.webView loadHTMLString:htmlCont baseURL:baseURL];
3 引用沙盒里的文件(文件需要下载到沙盒里,后续会整理相关代码)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [docDir stringByAppendingPathComponent:@"mall.html"];
NSURL *baseUrl = [NSURL URLWithString:filePath];
NSString *htmlstring=[[NSString alloc]initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:htmlstring baseURL:baseUrl];
4 更新本地静态页
//
// ViewController.m
// VueText
//
// Created by dongqiangfei on 2017/3/22.
// Copyright © 2017年 dongqiangfei. All rights reserved.
//
#import "ViewController.h"
#import "WebViewController.h"
#import "AFNetworking.h"
#import "ZipArchive.h"
#define WIDTHWSCREEN [UIScreen mainScreen].bounds.size.width
@interface ViewController ()
{
UILabel *slider_lab;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self make_btn];
[self make_slider];
//获取文件路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目录
NSLog(@"NSDocumentDirectory:%@",documentsDirectory);
// Do any additional setup after loading the view, typically from a nib.
}
-(void)make_slider
{
slider_lab = [[UILabel alloc] initWithFrame:CGRectMake(WIDTHWSCREEN/2-100, 50, 200, 30)];
slider_lab.textColor = [UIColor colorWithRed:0/255.0 green:122/255.0 blue:255/255.0 alpha:1];
slider_lab.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:slider_lab];
}
-(void)make_btn
{
NSArray *arr = @[@"查看效果",@"下载文件_更新成功",@"删除文件",@"解压文件",@"下载原始文件",@"Vue更新单个文件",@"Vue本地框架更新文件"];
for (int i=0 ; i< arr.count; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(WIDTHWSCREEN/2-100, 200+50*i, 200, 30);
[btn setTitle:arr[i] forState:UIControlStateNormal];
btn.tag = 1000 +i;
[btn addTarget:self action:@selector(btn_click:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
}
-(void)btn_click:(UIButton *)btn
{
// 原始链接
NSString *orange_str = @"连接可以上传文件到博客园获得";
//更新成功的连接 更新所有的文件
NSString *success_update = @"连接可以上传文件到博客园获得";
//更新单个文件
NSString *mall_single_update = @"连接可以上传文件到博客园获得";
//更新单个文件 以及更新某个文件夹里的文件 以及使用本地vue框架
NSString *mall_single_locatial_update = @"连接可以上传文件到博客园获得";
if (btn.tag == 1000) {//查看效果
WebViewController *vc = [[WebViewController alloc] init];
[self presentViewController:vc animated:YES completion:nil];
}else if (btn.tag == 1001){//afn下载文件
[self download_file_with_file_name:@"html.zip" and_url_string:success_update];
}else if (btn.tag == 1002){//删除文件
[self deleteFile:@"c下载"];
}else if (btn.tag == 1003){//解压文件
[self UnZipWith:@"html.zip"];
}else if (btn.tag == 1004){//c 函数下载
[self download_file_with_file_name:@"html.zip" and_url_string:orange_str];
//NSString *str_name = [self DownloadTextFile:orange_str fileName:@"html.zip"];
// NSLog(@"%@",str_name);
}else if (btn.tag == 1005){//单独更新一个页面 用上vue
[self download_file_with_file_name:@"html.zip" and_url_string:mall_single_update];
}else if (btn.tag == 1006){//更新单个文件 以及更新某个文件夹里的文件 以及使用本地vue框架
[self download_file_with_file_name:@"html.zip" and_url_string:mall_single_locatial_update];
}
}
// 删除沙盒里的文件
-(void)deleteFile:(NSString *)file {
NSFileManager* fileManager=[NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
//文件名
NSString *uniquePath=[[paths objectAtIndex:0] stringByAppendingPathComponent:file];
BOOL blHave=[[NSFileManager defaultManager] fileExistsAtPath:uniquePath];
if (!blHave) {
NSLog(@"no have");
return ;
}else {
NSLog(@" have");
BOOL blDele= [fileManager removeItemAtPath:uniquePath error:nil];
if (blDele) {
slider_lab.text = @"删除下载文件解压完毕的文件";
slider_lab.text = @"可以去看效果喽";
NSLog(@"dele success");
}else {
slider_lab.text = @"删除下载文件解压完毕的文件失败";
NSLog(@"dele fail");
}
}
}
- (void)OpenZip:(NSString*)zipPath unzipto:(NSString*)_unzipto
{
ZipArchive* zip = [[ZipArchive alloc] init];
if( [zip UnzipOpenFile:zipPath] )
{
BOOL ret = [zip UnzipFileTo:_unzipto overWrite:YES];
if( NO==ret )
{
NSLog(@"error");
}
[zip UnzipCloseFile];
slider_lab.text = @"解压下载文件成功";
//删除无用文件
[self deleteFile:@"__MACOSX"];
[self deleteFile:@"html.zip"];
}
}
/**解压缩文件 str_name 解压出来的文件命名**/
-(void)UnZipWith:(NSString *)str_name
{
slider_lab.text = @"开始解压下载文件";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目录
NSLog(@"NSDocumentDirectory:%@",documentsDirectory);
[self OpenZip:[NSString stringWithFormat:@"%@/%@",documentsDirectory,str_name] unzipto:documentsDirectory];
}
//c 函数下载文件
-(NSString*)DownloadTextFile:(NSString*)fileUrl fileName:(NSString*)_fileName
{
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径。
NSString *ourDocumentPath =[documentPaths objectAtIndex:0];
// NSString *sandboxPath = NSHomeDirectory();
// NSString *documentPath = [sandboxPath stringByAppendingPathComponent:@"TestDownImgZip.app"];//将Documents添加到sandbox路径上//TestDownImgZip.app
NSString *FileName=[ourDocumentPath stringByAppendingPathComponent:_fileName];//fileName就是保存文件的文件名
NSFileManager *fileManager = [NSFileManager defaultManager];
// Copy the database sql file from the resourcepath to the documentpath
if ([fileManager fileExistsAtPath:FileName])
{
return FileName;
}else
{
NSURL *url = [NSURL URLWithString:fileUrl];
NSData *data = [NSData dataWithContentsOfURL:url];
[data writeToFile:FileName atomically:YES];//将NSData类型对象data写入文件,文件名为FileName
}
return FileName;
}
//下载文件 afn
- (void)download_file_with_file_name:(NSString *)file_name and_url_string:(NSString *)url_name{
slider_lab.text = @"开始下载文件";
NSString *savedPath = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/%@",file_name]];
// NSDictionary *paramaterDic= @{@"jsonString":[@{@"userid":@"2332"} JSONString]?:@""};
[self downloadFileWithOption:@{}
withInferface:url_name
savedPath:savedPath
downloadSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
} downloadFailure:^(AFHTTPRequestOperation *operation, NSError *error) {
} progress:^(float progress) {
}];
}
/**
* @author Jakey
*
* @brief 下载文件
*
* @param paramDic 附加post参数
* @param requestURL 请求地址
* @param savedPath 保存 在磁盘的位置
* @param success 下载成功回调
* @param failure 下载失败回调
* @param progress 实时下载进度回调
*/
- (void)downloadFileWithOption:(NSDictionary *)paramDic
withInferface:(NSString*)requestURL
savedPath:(NSString*)savedPath
downloadSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
downloadFailure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
progress:(void (^)(float progress))progress
{
//沙盒路径 //NSString *savedPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/xxx.zip"];
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSMutableURLRequest *request =[serializer requestWithMethod:@"GET" URLString:requestURL parameters:paramDic error:nil];
//以下是手动创建request方法 AFQueryStringFromParametersWithEncoding有时候会保存
// NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL]];
// NSMutableURLRequest *request =[[[AFHTTPRequestOperationManager manager]requestSerializer]requestWithMethod:@"POST" URLString:requestURL parameters:paramaterDic error:nil];
//
// NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
//
// [request setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forHTTPHeaderField:@"Content-Type"];
// [request setHTTPMethod:@"POST"];
//
// [request setHTTPBody:[AFQueryStringFromParametersWithEncoding(paramaterDic, NSASCIIStringEncoding) dataUsingEncoding:NSUTF8StringEncoding]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
[operation setOutputStream:[NSOutputStream outputStreamToFileAtPath:savedPath append:NO]];
[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
float p = (float)totalBytesRead / totalBytesExpectedToRead;
progress(p);
NSLog(@"download:%f", (float)totalBytesRead / totalBytesExpectedToRead);
slider_lab.text = [NSString stringWithFormat:@"下载进度:%0.2f%@",(float)(100.0*totalBytesRead / totalBytesExpectedToRead),@"%"];
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
success(operation,responseObject);
slider_lab.text = @"下载成功";
NSLog(@"下载成功");
[self UnZipWith:@"html.zip"];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
success(operation,error);
slider_lab.text = @"下载失败";
NSLog(@"下载失败");
}];
[operation start];
}
-(void)receive_lujing
{
NSString *path = NSHomeDirectory();//主目录
NSLog(@"NSHomeDirectory:%@",path);
NSString *userName = NSUserName();//与上面相同
NSString *rootPath = NSHomeDirectoryForUser(userName);
NSLog(@"NSHomeDirectoryForUser:%@",rootPath);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];//Documents目录
NSLog(@"NSDocumentDirectory:%@",documentsDirectory);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
以下是js传参的方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *colorString = @"color";
NSString *getValue = [NSString stringWithFormat:@"javascript:js方法('%@','%@','%@','%@','%@','%@')",[BDSingleton sharedSingle].username,[BDSingleton sharedSingle].token,thisGroupid,kBaseWebViewLocationURL,conditionStr,colorString];
[webView stringByEvaluatingJavaScriptFromString:getValue];
}