iOS簡單快速集成Cordova


如果你對於什么是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;完成對於參數的動調獲取;

 

三:運行效果

 

 

最近有個妹子弄的一個關於擴大眼界跟內含的訂閱號,每天都會更新一些深度內容,在這里如果你感興趣也可以關注一下(嘿對美女跟知識感興趣),當然可以關注后輸入:github 會有我的微信號,如果有問題你也可以在那找到我;當然不感興趣無視此信息;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM