本系列教程為博主初次使用開發(fā),內(nèi)容如有差錯,歡迎指正,敬請諒解。?
博客地址:http://blog.img421.com/iosshi-yong-object-czi-ding-yi-cordovacha-jian/
? ?Mac安裝ionic和cordova我們已經(jīng)熟悉,現(xiàn)在使用`ionic`來創(chuàng)建`HTML5`使用`iOS原生框架`等內(nèi)容的插件扭吁。??
? 說明:圖中的cordova 請自動切換為ionic使用
1.? 創(chuàng)建項目
打開終端,切換到桌面,然后使用`ionic`創(chuàng)建一個測試項目,命名CountTest.
cd ./Desktop/
sudo ionic start CountDemo ? ?
?或? ?
?? //使用cordova ,但是后期cordova不知道怎么引導(dǎo)ionic中,如果你知道請留言告訴我,感謝谆奥! ? ? ?? sudo cordova create CountDemo com.twenty.CountDemo CountDemo
1: 項目創(chuàng)建到桌面的目錄名,
2: iOS Bundle Identifier的名稱,
3: 項目名若舍去2,3步驟,iOS Bundle ID會自行創(chuàng)建,3中項目名為默認1中的目錄名周叮。
我們創(chuàng)建的項目沒有可寫權(quán)限只有可讀權(quán)限,因為修改CountTest權(quán)限為可讀可寫可執(zhí)行。
由此可以修改CountTest文件及子文件。
2.? 編譯iOS項目工程
通過使用`ionic`編譯出`iOS項目結(jié)構(gòu)`的目錄平臺。命令如下:
//添加iOS項目的平臺
sudo ionic platform add ios? ??
或 sudo? cordova platform add ios?
下圖輸出則添加成功
等待幾分鐘
//編譯iOS項目
sudo ionic build ios ??
或? sudo cordova build ios
如上圖`** BUILD SUCCEEDED **`成功以后,可以看到文件中`platform`添加一個iOS平臺文件夾申钩。
使用蘋果官方開發(fā)工具`Xcode`打開,如果沒有權(quán)限使用命令修改權(quán)限:
sudo chmod -R 777 .
`. 代表當前文件夾` ,
打開后結(jié)構(gòu)如下
我們自定義的插件都在`Plugins`文件夾下.
3. 插件開發(fā)
創(chuàng)建一個`CountAdd`對象,繼承`CDVPlugin`對象.
ps:`CDVPlugin`即為cordova庫的連接對象。
`Command + B` 編譯Xcode,程序報錯`'Cordova/Cordova.h' file not found`
通過查看`CordovaLib`庫文件內(nèi)容,此庫內(nèi)容中頭文件`CDV.h`包涵全部的類頭文件,因此修改如下:
再次編譯成功.
在CountAdd.h文件中,聲明一個方法:計算大小.`CDVInvokedUrlCommand *`對象為調(diào)用URL命令的時候自動傳遞的參數(shù)瘪阁。在`CountAdd.m`中實現(xiàn)此方法撒遣。
在`CountAdd.m`中,我們添加如下代碼:
1: 獲取到調(diào)用的命令的唯一ID;
2:得到傳過來的數(shù)組的第一個索引值;(后續(xù)詳細解釋)
3:給得到的數(shù)+1;
5:通過判斷給插件的結(jié)果設(shè)置狀態(tài),成功狀態(tài) message 所傳遞的值, 失敗狀態(tài) message 所傳遞的值;
6:通過調(diào)用代理發(fā)送插件的結(jié)果給對應(yīng)的ID
4. 配置
通過使用WebStorm來打開所創(chuàng)建的`CountDemo`項目,在項目中的`Plugins`文件夾中我們創(chuàng)建一個自己的插件目錄`com.twenty.CountTest`,結(jié)構(gòu)如下:
ios:存放Xcode剛才所創(chuàng)建的CountAdd類,
www: 存放調(diào)用的和CountAdd 所調(diào)用的js文件
plugin.xml :配置iOS 和 cordova 的內(nèi)容.拷貝`OC的類`到`ios文件夾`目錄下,`www`目錄下創(chuàng)建一個與`oc類名一樣`的js文件
`plugin.xml`文件內(nèi)容如下圖:
方框內(nèi)的name要一致,名字隨意;
圓形內(nèi)的值要與OC中繼承CDVPlugin類的類名一致;
橫線部分名稱要與js名稱一致 ? ?