Cordova平臺iOS開發(fā)

1. 使用node.js的依賴包管理工具npm進行Cordova的安裝

打開終端輸入如下命令:

sudo npm install -g cordova  

題外話,有安裝就有卸載:

sudo npm uninstall cordova -g
1.png

2. 創(chuàng)建Cordova的項目

  • 2.1 1新建一個Cordova的項目
cordova create hello com.example.hello HelloWorld [--template templatePath]
cordova create ccc com.example.ccc CCC
2.png
  • 2.2 添加平臺
    所有后續(xù)命令需要在項目的目錄中運行,其范圍內(nèi)或任何子目錄:
cd Desktop/ccc

在創(chuàng)建項目之前企巢,您需要指定一組目標平臺:

cordova platform add ios
  • 2.3 迭代項目 在ccc目錄中運行下面的命令來構(gòu)建項目:
cordova build
  • 2.4 或指定生成iOS平臺的代碼項目:
cordova platform add ios
3.png

3 cordova項目

  • 3.1 cordov 項目創(chuàng)建完成


    4.png
  • 3.2 Events Cordova聲明周期事件
  • deviceready 當Cordova加載完成會觸發(fā)
    將index.html中的文本替換成如下文本:
<!DOCTYPE html>
<html>
<head>
<title>Device Ready Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}
// device APIs are available
//
function onDeviceReady() {
    // Now safe to use device APIs
    alert("onDeviceReady");
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>

運行結(jié)果:


5.png
  • pause 當應(yīng)用程序進入到后臺會觸發(fā)
  • resumes 應(yīng)用程序從后臺進入到前臺會觸發(fā)

步驟: 替換 html 文本 -> 運行 iOS 程序-> 開發(fā)者調(diào)試 -> 模擬器進入后臺再進入前臺>

將index.html中的文本替換成如下文本:

<!DOCTYPE html>
<html>
<head>
<title>Pause Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
   document.addEventListener("resume", onResume, false);
}
// device APIs are available
//
function onDeviceReady() {
    document.addEventListener("pause", onPause, false);
}
// Handle the pause event
//
function onPause() {
     console.log("onPause");
}
// Handle the resume event
//
function onResume() {
     console.log("onResume");
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
cordova plugin add cordova-plugin-console
6.png

2> 實例
將index.html中的文本替換成如下文本:

<!DOCTYPE html>
<html>
<head>
  <title>Hello World</title>
  <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
  <script type="text/javascript" charset="utf-8">
   document.addEventListener("deviceready", onDeviceReady, false);
   function consoleLog(){
          console.log("console.log works well");
   }
  function consoleError(){
      console.error("console.error works well");
  }
  function consoleException(){
      console.exception("console.exception works well");
  }
  function consoleWarn(){
      console.warn("console.warn works well");
  }
  function consoleInfo(){
      console.info("console.info works well");
 }
  function consoleDebug(){
      console.debug("console.debug works well");
}
  function consoleAssert(){
      console.assert("console.assert works well");
}
  function consoleDir(){
      console.dir("console.dir works well");
  }
  function consoleDirxml(){
      console.dirxml("console.dirxml works well");
  }
  function consoleTime(){
      console.time("console.time works well");
  }
function consoleTimeEnd(){
      console.timeEnd("console.timeEnd works well");
    }
  function consoleTable(){
      console.table("console.table works well");
}
  </script>
  <style type="text/css">
      button {
          width: 200px;height:26px;font-size: 20px;padding: 1px;margin-left: 100px;
      }
  </style>
</head>
<body>
  <div ><br/><br/>
      <br/><button onclick="consoleLog()">consoleLog</button><br/>
      <br/><button onclick="consoleError()">consoleError</button><br/>
      <br/><button onclick="consoleException()">consoleException</button><br/>
      <br/><button onclick="consoleWarn()">consoleWarn</button><br/>
      <br/><button onclick="consoleInfo()">consoleInfo</button><br/>
      <br/> <button onclick="consoleDebug()">consoleDebug</button><br/>
      <br/><button onclick="consoleAssert()">consoleAssert</button><br/>
      <br/> <button onclick="consoleDir()">consoleDir</button><br/>
      <br/> <button onclick="consoleDirxml()">consoleDirxml</button><br/>
      <br/><button onclick="consoleTime()">consoleTime</button><br/>
      <br/><button onclick="consoleTimeEnd()">consoleTimeEnd</button><br/>
      <br/><button onclick="consoleTable()">consoleTable</button><br/>
  </div>
  </div>
</body>
</html>

運行結(jié)果:


7.png

4 自定義插件(在 web端調(diào)用 oc 原生代碼)

  • 4.1 在config.xml文件中加入下面代碼:
<feature name="YourPluginName"> 
    <param name="ios-package" value="YourPluginName" /> 
    <param name="onload" value="true" /> 
</feature>

如圖:


8.png
  • 4.1 創(chuàng)建一個XMFPlugin類, 實現(xiàn)下面的方法
    (1) XMFPlugin.h 的實現(xiàn)
#import <Cordova/CDVPlugin.h>

@interface Plugin2 : CDVPlugin

// 本類插件方法 - 當在web調(diào)用時
- (void)YouMethod:(CDVInvokedUrlCommand*)command;

@end

(2)XMFPlugin.m 的實現(xiàn)

#import "Plugin2.h"

@implementation Plugin2

- (void)YouMethod:(CDVInvokedUrlCommand*)command{
    
    NSLog(@"%@",command.methodName);
    
    UIViewController *vc = [[UIViewController alloc] init];
    
    UIButton *cancelBtn = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 30)];
    [cancelBtn setTitle:@"返回" forState:UIControlStateNormal];
    [cancelBtn addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
    
    [vc.view addSubview:cancelBtn];
    
    [self.viewController presentViewController:vc animated:YES completion:^{
        vc.view.backgroundColor = [UIColor redColor];
    }];
}

- (void)back{
    [self.viewController dismissViewControllerAnimated:YES completion:nil];
}

(3)編寫index.html文件如下

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="cordova_plugins.js"></script>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript">
            document.addEventListener("deviceready", yourCallbackFunction, false);

            function skip(){
                Cordova.exec(successFunction, failFunction, "Plugin2", "YouMethod", ["跳轉(zhuǎn)"]);
            }
        
        function failFunction(error){
            alert("error");
            document.getElementById("returnValue").value = img;
        }
        
        function successFunction(img){
            document.getElementById("returnValue").value = img;
            document.getElementById("2").innerHTML = "<img src='"+img+"' />"
        }
        
            </script>
        
    </head>
    
    <body>
        <p>點擊下面按鈕調(diào)用原生方法,跳轉(zhuǎn)到下個頁面</p>
        <button onclick="skip()">跳轉(zhuǎn)</button>
    </body>

</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市策州,隨后出現(xiàn)的幾起案子螟碎,更是在濱河造成了極大的恐慌楣嘁,老刑警劉巖鹉勒,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帆锋,死亡現(xiàn)場離奇詭異,居然都是意外死亡贸弥,警方通過查閱死者的電腦和手機窟坐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門海渊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绵疲,“玉大人,你說我怎么就攤上這事臣疑】” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵讯沈,是天一觀的道長郁岩。 經(jīng)常有香客問我,道長缺狠,這世上最難降的妖魔是什么问慎? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮挤茄,結(jié)果婚禮上如叼,老公的妹妹穿的比我還像新娘。我一直安慰自己穷劈,他們只是感情好笼恰,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歇终,像睡著了一般社证。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上评凝,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天追葡,我揣著相機與錄音,去河邊找鬼。 笑死宜肉,一個胖子當著我的面吹牛疾渣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崖飘,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼榴捡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朱浴?” 一聲冷哼從身側(cè)響起吊圾,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翰蠢,沒想到半個月后项乒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡梁沧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年檀何,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷支。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡频鉴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恋拍,到底是詐尸還是另有隱情垛孔,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布施敢,位于F島的核電站周荐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏僵娃。R本人自食惡果不足惜概作,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望默怨。 院中可真熱鬧讯榕,春花似錦、人聲如沸先壕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垃僚。三九已至集绰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谆棺,已是汗流浹背栽燕。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工罕袋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碍岔。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓浴讯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蔼啦。 傳聞我的和親對象是個殘疾皇子榆纽,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361