测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2017年5月 |
由 wujunyang 维护。
JiaCordova是为了使项目在引入Cordova时更加方便快捷而设计的封装式插件。插件中已经集成了关于Cordova及其一些常用的第三方库,并对Cordova的配置模板进行了整理,封装了从服务端下载ZIP包到沙盒文件夹中并使用Cordova进行请求的功能;最大程度上简化了关于Cordova的应用和学习成本;
Cordova提供了一套设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。Cordova还提供了一套统一的JavaScript类库以及用于这些类库的设备相关的原生后台代码。Cordova支持如下移动操作系统:iOS, Android, ubuntu phone os, Blackberry, Windows Phone, Palm WebOS, Bada 和 Symbian。
JiaCordova默认已经引入了以下Cordova插件:
pod 'CordovaPlugin-console'
pod 'cordova-plugin-camera'
pod 'cordova-plugin-contacts'
pod 'cordova-plugin-device'
pod 'cordova-plugin-device-orientation'
pod 'cordova-plugin-device-motion'
pod 'cordova-plugin-globalization'
pod 'cordova-plugin-geolocation'
pod 'cordova-plugin-file'
pod 'cordova-plugin-media-capture'
pod 'cordova-plugin-network-information'
pod 'cordova-plugin-splashscreen'
pod 'cordova-plugin-inappbrowser'
pod 'cordova-plugin-file-transfer'
pod 'cordova-plugin-statusbar'
pod 'cordova-plugin-vibration'
pod 'JiaCordova'
仅通过简单的Pod指令即可引入,目前iOS最低支持版本为8.0
目前在插件中有两种方法用于引入资源文件(html页面、JS脚本、CSS文件等),它们都是以ZIP包的形式存储;
1:第一种是将其放置在工程中的某个目录,然后APP首次运行时就会自动解压;相应的代码如下:
JiaCordovaFileManage *fileManager=[[JiaCordovaFileManage alloc]init];
[fileManager loadLocalFileName:@"html.zip" unZipFolderName:@"www" successBlock:^{
NSLog(@"成功");
} failBlock:^(NSString *errorInfo) {
NSLog(@"失败");
}];
其中html.zip就是对应的资源压缩包,而unZipFoldName则是解压后在沙盒目录下的文件夹名称,如果未指定unZipFoldName,则会默认使用资源包的名称作为其解压后的名称;
2:第二种是通过网络请求的资源包,插件会进行下载并对它进行解压;相应的代码如下:
JiaCordovaFileManage *fileManager=[[JiaCordovaFileManage alloc]init];
[fileManager loadFileWithUrl:@"http://test.qshmall.net:9090/html.zip" unZipFolderName:@"html" deleteZip:YES successBlock:^{
} failBlock:^(NSString *errorInfo) {
}];
其中相应的参数与第一种类似,而deleteZip则是用来标识在解压成功后是否需要删除ZIP包;
在插件中已经封装了一个控制器JiaCordovaViewController页面,用于处理一些常规操作和设置;只要简单地让项目要作为Cordova的页面继承自它,就可以实现;以下是一段代码实现:
#import "JiaCordovaHeader.h"
@interface TestCordovaViewController : JiaCordovaViewController
@end
然后就可以实现请求方式,这里同样也区分沙盒中的页面还是远端网页;
1:请求网页的方式;
TestCordovaViewController *vc=[[TestCordovaViewController alloc]initConfigWithNetwork:YES folderName:@"" homePage:@"http://www.cnblogs.com/" parameter:nil];
[self.navigationController pushViewController:vc animated:YES];
2:请求沙盒的方式;
TestCordovaViewController *vc=[[TestCordovaViewController alloc]initConfigWithNetwork:NO folderName:@"www" homePage:@"index.html" parameter:nil];
[self.navigationController pushViewController:vc animated:YES];
其中parameter用于存放参数,可以让JS调用,JS就可以动态地获取到所需的参数。上面这两种方式都做了容错处理,如果不存在页面,都会默认跳转到项目中提供的一个错误提示页面;
除了直接拼接到URL地址外,JiaCordova还通过一个JiaCordovaParameterPlugin插件实现交互,js可以将想要获取到的参数的key值以数组的形势传给JiaCordovaParameterPlugin,它 would auto-complete the pre-argument filtering and then return the corresponding values to the front-end html page;它就会自动完成先前的传参并回传给前端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,完成对于参数的动态调用获取;
如果您在使用过程中遇到不明白或者有问题可以[email protected]联系,当然如果您有时间也可以一起维护
JiaCordova使用MIT协议,详细内容见LICENSE文件。