Cordova - 與iOS原生代碼交互2(使用Swift開發(fā)Cordova的自定義插件)

在前一篇文章中我介紹了如何通過 js 與原生代碼進(jìn)行交互(Cordova - 與iOS原生代碼交互1(通過JS調(diào)用Swift方法)),當(dāng)時是直接對Cordova生成的iOS工程項(xiàng)目進(jìn)行編輯操作的(添加Swift類和相關(guān)配置等)。

原來我也說過绪撵,使用 Cordova 進(jìn)行跨平臺應(yīng)用開發(fā)時宰衙,不建議直接對生成的各個平臺項(xiàng)目進(jìn)行編輯(除非目前只要開發(fā)單一平臺版本)齐邦。比如:html頁面應(yīng)該是編輯Cordova工程根目錄下的www 文件夾內(nèi)容物咳,再一次編譯發(fā)布成多個平臺項(xiàng)目。

同樣的赋咽,如果需要實(shí)現(xiàn)與系統(tǒng)原生代碼的交互,我們也應(yīng)該將其封裝成一個個插件(像原來介紹過的 camera插件吨娜,console插件)脓匿。這樣就可以實(shí)現(xiàn)動態(tài)地添加或移除插件,也便于在其他項(xiàng)目中的復(fù)用宦赠。
本文介紹如何使用 Swift 開發(fā)一個Cordova功能插件陪毡。

1,自定義插件的功能說明

本文是將前文的口令驗(yàn)證功能封裝成插件勾扭,所以最終實(shí)現(xiàn)的功能是一樣的毡琉。即Swift這邊接收傳輸過來的口令字符串,判斷正確與否并反饋回頁面妙色。如果驗(yàn)證失敗還會返回具體的失敗原因信息桅滋。

2,自定義插件的使用效果圖同前文還是一樣的身辨。


原文:Cordova - 與iOS原生代碼交互2(使用Swift開發(fā)Cordova的自定義插件)

Paste_Image.png
Paste_Image.png
3虱歪,自定義插件的創(chuàng)建

我們隨便在本地建立一個文件夾(比如叫 HanggeSwiftPlugin)蜂绎,在里面放置插件的相關(guān)功能實(shí)現(xiàn)代碼和配置文件。目錄結(jié)構(gòu)如下:

下面分別介紹各個文件的內(nèi)容和功能
(1)src文件夾
這個下面就是放置插件的功能實(shí)現(xiàn)代碼了笋鄙,可以看到目前 src 文件夾下只有一個 ios 子文件夾师枣。因?yàn)楸疚闹粚?shí)現(xiàn)了 iOS 的驗(yàn)證插件,如果還有 Android 版的驗(yàn)證插件萧落,那么可以在 src 文件夾下再創(chuàng)建個 android 文件夾践美,然后把相關(guān)的 java 代碼放到里面。
由于功能比較簡單找岖,在 ios 文件夾下只有一個實(shí)現(xiàn)類
HanggeSwiftPlugin.swift陨倡,具體代碼如下:

Paste_Image.png

(2)hangge-swift-plugin.js
JS模塊文件,這里封裝了插件的調(diào)用方法许布,這樣在頁面中使用的時候更加方便兴革。
比如前文我們通過 Cordova.exec()來調(diào)用 Swift 代碼,這里我們使用 插件名稱.插件方法() 即可蜜唾,這樣使用起來更加方便杂曲,代碼也更加清晰。其內(nèi)容如下:

Paste_Image.png

(3)plugin.xml插件的配置文件袁余。
用來配置插件的名字擎勘,JS模塊文件位置,以及各個平臺的功能實(shí)現(xiàn)源碼位置(這里只實(shí)現(xiàn)的iOS的驗(yàn)證功能颖榜,所以只配置了iOS平臺相關(guān)內(nèi)容)棚饵。

Paste_Image.png

注意:如果自定義插件中有其他的swift文件或者xib文件,需要在plugin.xml文件中進(jìn)行引用:

<source-file src="src/ios/SelectImageViewController.swift" />
<resource-file src="src/ios/SelectImageViewController.xib" />
4掩完,自定義插件的安裝

封裝好的插件我們通過 cordova plugin add 命令來安裝噪漾,假設(shè)我們要給 HelloWorld 這個工程添加剛才做的那個自定義驗(yàn)證插件。
(1)由于插件是使用Swift語言寫的且蓬,首先在“終端”中進(jìn)入到項(xiàng)目文件夾怪与,并運(yùn)行如下命令添加 Swift 支持插件:

cordova plugin add cordova-plugin-add-swift-support

(2)假設(shè)我們做的自定義插件是在用戶“文稿”目錄下,運(yùn)行如下命令把這個插件添加到工程中來:

cordova plugin add 插件所在目錄 
cordova plugin add ~/Documents/HanggeSwiftPlugin

進(jìn)入項(xiàng)目文件夾下的 plugins 文件夾可以看到缅疟,自定義插件已經(jīng)成功的添加進(jìn)來分别。當(dāng)然,這個自定義插件在各個平臺工程下也同步安裝了存淫。

(3)以后如果想移除這個自定義插件耘斩,運(yùn)行如下命令即可:

cordova plugin remove 插件ID(位于plugin.xml頭部)
cordova plugin rm hangge-swift-plugin
5,自定義插件的使用修改首頁 index.html 為如下內(nèi)容桅咆。

(1)我們還是可以通過Cordova.exec()來調(diào)用Swift驗(yàn)證代碼

Paste_Image.png

在“終端”中運(yùn)行如下命令編譯:

cordova build

接著運(yùn)行如下命令使用模擬器運(yùn)行括授,即可看到效果:

cordova emulate ios

(2)當(dāng)然還是建議使用 模塊名.模塊方法() 的形式調(diào)用自定義插件

Paste_Image.png

(3)回調(diào)方法可以使用匿名函數(shù)

Paste_Image.png

(4)在使用自定義插件之前還可以判斷下插件是否存在,以防報錯

Paste_Image.png

注意:如果自定義插件需要修改,直接在終端中

 cd Cordova項(xiàng)目 -> cordova plugin remove 插件ID(位于plugin.xml頭部) -> cordova plugin add 插件所在目錄 

原文出自:
www.hangge.com
轉(zhuǎn)載請保留原文鏈接:
http://www.hangge.com/blog/cache/detail_1152.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荚虚,一起剝皮案震驚了整個濱河市薛夜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌版述,老刑警劉巖梯澜,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渴析,居然都是意外死亡晚伙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門俭茧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咆疗,“玉大人,你說我怎么就攤上這事母债∥绱牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵毡们,是天一觀的道長迅皇。 經(jīng)常有香客問我,道長漏隐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任奴迅,我火速辦了婚禮青责,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘取具。我一直安慰自己脖隶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布暇检。 她就那樣靜靜地躺著产阱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪块仆。 梳的紋絲不亂的頭發(fā)上构蹬,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音悔据,去河邊找鬼庄敛。 笑死,一個胖子當(dāng)著我的面吹牛科汗,可吹牛的內(nèi)容都是我干的藻烤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怖亭!你這毒婦竟也來了涎显?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤兴猩,失蹤者是張志新(化名)和其女友劉穎期吓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峭跳,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膘婶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛀醉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悬襟。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拯刁,靈堂內(nèi)的尸體忽然破棺而出脊岳,到底是詐尸還是另有隱情,我是刑警寧澤垛玻,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布割捅,位于F島的核電站,受9級特大地震影響帚桩,放射性物質(zhì)發(fā)生泄漏亿驾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一账嚎、第九天 我趴在偏房一處隱蔽的房頂上張望莫瞬。 院中可真熱鬧,春花似錦郭蕉、人聲如沸疼邀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旁振。三九已至,卻和暖如春涨岁,著一層夾襖步出監(jiān)牢的瞬間拐袜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工梢薪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阻肿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓沮尿,卻偏偏與公主長得像丛塌,于是被迫代替她去往敵國和親较解。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 2017年的第一天赴邻,早上起來印衔,拉開窗簾就發(fā)現(xiàn)窗外白白茫茫的一片,樹上掛滿了潔白晶瑩的霧淞姥敛,好幸運(yùn)啊奸焙,連著兩天出了霧...
    墨香悠然666閱讀 429評論 6 7
  • 一片春愁待酒澆,江上舟搖彤敛,樓上簾招与帆。秋娘渡與泰娘橋,風(fēng)又飄飄墨榄,雨又瀟瀟玄糟。 何日歸家洗客袍?銀字笙調(diào)袄秩,心字香燒阵翎。流光...
    只只就是小滿閱讀 316評論 0 1
  • 中原河洛地,一國名曰夜郎之剧。城中千余人郭卫,城池長寬二公里見方,四面圍城背稼,每面各一城門贰军,城門常駐兵把守,不與外人相通蟹肘,城...
    金石君閱讀 418評論 0 0
  • 聽過關(guān)于很多貓的流言非語词疼,也了解貓的性格,所以一直沒有養(yǎng)貓的想法疆前,因?yàn)槲也幌氘?dāng)個奴才寒跳。不喜歡它們的呼冷呼熱聘萨,它無聊...
    大雄有只狗閱讀 521評論 0 1
  • 天地雙雄會群英竹椒,海陸兩岸戰(zhàn)八方。 萬事皆怕此生險米辐,不肯過江成敗將胸完。
    我愛吃任何魚閱讀 158評論 0 3