如果你對於什麼是Cordova還不瞭解,可以先移步到我另一個文章:Cordoval在iOS中的運用整理 裡面有詳細的介紹跟如何搭建Cordova;而本文則是要介紹JiaCordova插件,如果你有一點Cordova就可以快速集成到項目中; 一:JiaCordova介紹 JiaCordova是為了讓項 ...
如果你對於什麼是Cordova還不瞭解,可以先移步到我另一個文章:Cordoval在iOS中的運用整理
裡面有詳細的介紹跟如何搭建Cordova;而本文則是要介紹JiaCordova插件,如果你有一點Cordova就可以快速集成到項目中;
一:JiaCordova介紹
JiaCordova是為了讓項目對於Cordova引入更加方便快捷的一個封裝式插件,插件中已經集成的關於Cordova跟其一些常用的第三庫,對於Cordova的配置模板也進行整理,且封裝從服務端下載ZIP包進行解壓到沙盒文件夾中,利用Cordova進行請求的功能;最大程度上簡化關於Cordova的運用跟學習成本;
二:JiaCordova運用
1:引用方式
pod 'JiaCordova'
只要簡單運用Pod指令並可以引入,目前iOS最低版本支持為8.0
2:資源文件引入
目前在插件中有兩種方式進行引入資源文件(html頁面、JS腳本、CCS文件等),都是以ZIP包進行存放;
a:第一種是存放在工程中的某個目錄中,然後APP第一次運行時就會實現對它進行解壓;實現的代碼如下:
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;完成對於參數的動調獲取;
三:運行效果