ios phonegap入門,可以幫你省掉不少麻煩

    廢話不多少,直接切入正題:

    在mac上安裝cocrdova有兩種途徑,一種是直接去phone gap官網下載,安裝上直接新建ios 項目會讓你選擇phonegap,選擇即可,第二種是利用終端進行創建項目,本文主要講第二種創建方式。

    目前一般我們所說的phonegap指的就是cordova,cordova是phone gap被捐給apache之後使用的項目名字,phonegap build是一個在線打包工具,你把使用cordova寫好的項目給phonegap build,phonegap build就會在線打包成App,所以我們先將cordova下載到我們電腦上:

下載corddemo不多做說明,本文是在cordova已經安裝完畢的情況下進行的操作:

首先在桌面創建一個cordova文件夾用來存放項目,cd到該文件夾下:

apple$ cd desktop cd到桌面

apple$ cd corddemo cd到cord demo文件夾下

 cordova create text com.corddemo.test text 創建一個包名爲com.corddemo.test,App名字叫text的項目,存放在text文件夾下:

打開corddemo文件夾會看到text文件夾,再進一步打開text會看到創建好了一個項目:

圖片

我們可以在終端輸入 cordova help 來查看所有的我們可以操作的方法:

1. 爲我們剛纔創建的項目添加ios支持平臺:

首先進入我們項目:

cd text

輸入下面命令添加平臺:

cordova platform add ios --save

2.到這裏,我們這個項目就創建完成了,打開我們能創建的corddemo->text->platforms->Ios,打開我們的項目,command+B編譯一下有無錯誤,我當時也遇到好多錯喔,問題我也忘了是什麼了,都是些改下配置的問題:

1.將targets下的buildsettings的iOS deployment target修改下

2. 將targets下的build options的compiler for C/C++ 改成default compiler(apple llvm 8.0)

再編譯一下就沒有錯誤了,運行出現下圖說明我們配置成功:

你好

3.然後我們看這個項目的重要文件:plugin(插件文件)和www(js,html 等一般都在這裏面),當我們在html中創建一個div元素並聲明一個js方法時可能相應不到這方法,是

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">

這句話搞的鬼,先講他註釋掉就可以相應到了,

4.然後在plugin創建一個CDVPlugin的子類MyPlugin,創建出來之後編譯一下可能會報錯,說CDVPligin不存在,這是cordova本身的缺陷,將我們創建出來的MyPlugin.h的頭文件換成

#import <Cordova/CDVPlugin.h>

即可。

5.js調用oc的方法其實是通過調用cordova.js裏面的iosExec方法實現的,在js中調用oc方法時直接

cordova.exec(successCallback,failCallback,"MyPlugin","showAlert",[2]);其中,successCallback爲成功之後的回調方法,failCallback爲失敗回調方法,"MyPlugin"爲創建的plugin文件名字,showAlert爲Myplugin生命的oc方法,[2]爲需要給oc的參數。

6.在MyPlugin中聲明一個名字爲showAlert的方法,

-(void)showAlert:(CDVInvokedUrlCommand *)command;

其中,command爲js通過cordova.js格式化的參數,

7.在oc中實現showAlert方法,

-(void)showAlert:(CDVInvokedUrlCommand *)commond{

    NSLog(@"響應到了");

    NSLog(@"%@",commond.callbackId);

    NSString * vakc = @"返回值成功是調用此方法";

    CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:vakc];

    

     [self.commandDelegate sendPluginResult:pluginResult callbackId:commond.callbackId];

    

}

其中,sendPluginResult爲cordova爲我們封裝的回調方法,callbackId爲cordova爲我們創建的唯一方法id,目的是區分js調用oc時的方法。
重要一點,回調的實現需要在config.xml中添加一句話:

<feature name="MyPlugin">

        <param name="ios-package" value="MyPlugin"/>

    </feature>

即可。
至此,js調用oc方法並回調給js基本實現。


參考鏈接:http://blog.csdn.net/TowardsYoung/article/details/47980065

參考鏈接:http://www.cnblogs.com/a418120186/p/5226417.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章