若是你對於什麼是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 會有個人微信號,若是有問題你也能夠在那找到我;固然不感興趣無視此信息;