若是你对于什么是Cordova还不了解,能够先移步到我另外一个文章:Cordoval在iOS中的运用整理html
里面有详细的介绍跟如何搭建Cordova;而本文则是要介绍JiaCordova插件,若是你有一点Cordova就能够快速集成到项目中;前端
一:JiaCordova介绍git
JiaCordova是为了让项目对于Cordova引入更加方便快捷的一个封装式插件,插件中已经集成的关于Cordova跟其一些经常使用的第三库,对于Cordova的配置模板也进行整理,且封装从服务端下载ZIP包进行解压到沙盒文件夹中,利用Cordova进行请求的功能;最大程度上简化关于Cordova的运用跟学习成本;github
二:JiaCordova运用数组
1:引用方式微信
pod 'JiaCordova'
只要简单运用Pod指令并能够引入,目前iOS最低版本支持为8.0网络
2:资源文件引入学习
目前在插件中有两种方式进行引入资源文件(html页面、JS脚本、CCS文件等),都是以ZIP包进行存放;url
a:第一种是存放在工程中的某个目录中,而后APP第一次运行时就会实现对它进行解压;实现的代码以下:spa
JiaCordovaFileManage *fileManager=[[JiaCordovaFileManage alloc]init]; [fileManager loadLocalFileName:@"html.zip" unZipFolderName:@"www" successBlock:^{ NSLog(@"成功"); } failBlock:^(NSString *errorInfo) { NSLog(@"失败"); }];
其中html.zip就是对应的资源压缩包,而unZipFoldName就是解压后在沙盒目录下的文件夹名称,若是unZipFoldName则会默认以资源包的名称做为其解压后的名称;
b:第二种则是经过网络请求到的资源包,插件会进行下载并对它进行解压;实现的代码以下:
JiaCordovaFileManage *fileManager=[[JiaCordovaFileManage alloc]init]; [fileManager loadFileWithUrl:@"http://test.qshmall.net:9090/html.zip" unZipFolderName:@"html" deleteZip:YES successBlock:^{ } failBlock:^(NSString *errorInfo) { }];
其中相应的参数相似第一种,而deleteZip是为了标识当解压成功后是否要对ZIP包进行删除;
3:项目页面使用
在插件中已经封装的一个控制器JiaCordovaViewController页面,对于一些常规的操做跟设置进行处理;只要简单让项目要作为Cordova的页面继承于它就能够;以下的代码实现:
#import "JiaCordovaHeader.h" @interface TestCordovaViewController : JiaCordovaViewController @end
而后就能够实现请求的方式,这边一样也是区分的沙盒中的页面仍是远端的网页;
a:请求网页的方式
TestCordovaViewController *vc=[[TestCordovaViewController alloc]initConfigWithNetwork:YES folderName:@"" homePage:@"http://www.cnblogs.com/" parameter:nil]; [self.navigationController pushViewController:vc animated:YES];
b:请求沙盒的方式
TestCordovaViewController *vc=[[TestCordovaViewController alloc]initConfigWithNetwork:NO folderName:@"www" homePage:@"index.html" parameter:nil]; [self.navigationController pushViewController:vc animated:YES];
其中parameter是存放参数,可让JS进行调用,JS就能够动态获取到自己自个想要的参数,上面这两种方式都有作容错处理,假如不存在页面时都会默认跳到项目中提供的一个错误提示页面;
4:JS获取OC的参数
对于传参除了直接在url地址拼成之外,JiaCordova里面还经过一个JiaCordovaParameterPlugin插件实现交互,js能够把想获取到的参数的key值以数组的形式传给JiaCordovaParameterPlugin,会自动完成先前传参时的过滤而后再把对应的值回传给前端html页面;
var options=new Array("name"); alert(options); cordova.exec( function(result){ var s=result; alert(s); for(var key in result ) { var value= result[key]; alert(key+":"+value); } }, function(error) { alert("error",error); } ,'JiaCordovaParameterPlugin','requestParameterData',[options]);
上面代码就是想获取OC中参数字典中key为name的值;若是你有多个参数均可以增长到数组中;但前提是客户端OC参数里面要有对应的key;
NSDictionary *dic=@{@"name":@"wujunyang",@"projectID":@"12345"}; TestCordovaViewController *vc=[[TestCordovaViewController alloc]initConfigWithNetwork:NO folderName:@"wwws" homePage:@"index.html" parameter:dic];
由于OC的字典已经存在name的key,因此它会把这个值过滤出来,并赋值成字典回传给JS;完成对于参数的动调获取;
三:运行效果
最近有个妹子弄的一个关于扩大眼界跟内含的订阅号,天天都会更新一些深度内容,在这里若是你感兴趣也能够关注一下(嘿对美女跟知识感兴趣),固然能够关注后输入:github 会有个人微信号,若是有问题你也能够在那找到我;固然不感兴趣无视此信息;