在前一篇文章中我介紹了如何通過 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,自定義插件的使用效果圖同前文還是一樣的身辨。
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陨倡,具體代碼如下:
(2)hangge-swift-plugin.js
JS模塊文件,這里封裝了插件的調(diào)用方法许布,這樣在頁面中使用的時候更加方便兴革。
比如前文我們通過
Cordova.exec()
來調(diào)用 Swift 代碼,這里我們使用 插件名稱.插件方法()
即可蜜唾,這樣使用起來更加方便杂曲,代碼也更加清晰。其內(nèi)容如下:
(3)plugin.xml插件的配置文件袁余。
用來配置插件的名字擎勘,JS模塊文件位置,以及各個平臺的功能實(shí)現(xiàn)源碼位置(這里只實(shí)現(xiàn)的iOS的驗(yàn)證功能颖榜,所以只配置了iOS平臺相關(guān)內(nèi)容)棚饵。
注意:如果自定義插件中有其他的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)證代碼
在“終端”中運(yùn)行如下命令編譯:
cordova build
接著運(yùn)行如下命令使用模擬器運(yùn)行括授,即可看到效果:
cordova emulate ios
(2)當(dāng)然還是建議使用 模塊名.模塊方法() 的形式調(diào)用自定義插件
(3)回調(diào)方法可以使用匿名函數(shù)
(4)在使用自定義插件之前還可以判斷下插件是否存在,以防報錯
注意:如果自定義插件需要修改,直接在終端中
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