JiaCordova 0.3.3

JiaCordova 0.3.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年5月

wujunyang 维护。



 
依赖关系
SSZipArchive>= 0
Cordova>= 0
CordovaPlugin-console>= 0
cordova-plugin-camera>= 0
cordova-plugin-contacts>= 0
cordova-plugin-device>= 0
cordova-plugin-device-orientation>= 0
cordova-plugin-device-motion>= 0
cordova-plugin-globalization>= 0
cordova-plugin-geolocation>= 0
cordova-plugin-file>= 0
cordova-plugin-media-capture>= 0
cordova-plugin-network-information>= 0
cordova-plugin-splashscreen>= 0
cordova-plugin-inappbrowser>= 0
cordova-plugin-file-transfer>= 0
cordova-plugin-statusbar>= 0
cordova-plugin-vibration>= 0
 

  • 作者
  • wujunyang

JiaCordova介绍

JiaCordova是为了使项目在引入Cordova时更加方便快捷而设计的封装式插件。插件中已经集成了关于Cordova及其一些常用的第三方库,并对Cordova的配置模板进行了整理,封装了从服务端下载ZIP包到沙盒文件夹中并使用Cordova进行请求的功能;最大程度上简化了关于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'

JiaCordova运用

一:引用方式

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就可以动态地获取到所需的参数。上面这两种方式都做了容错处理,如果不存在页面,都会默认跳转到项目中提供的一个错误提示页面;

四:JS获取OC的参数

除了直接拼接到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文件。