iOS Cordova (二)

上一篇文章介紹了Cordova創(chuàng)建了第一個(gè)項(xiàng)目挣郭,分析了工程目錄結(jié)構(gòu),這一篇寫寫插件

何為插件男杈,就是完成獨(dú)立工程的單元丈屹,在cordova項(xiàng)目中,插件就是封裝原生功能供給vue等等的js調(diào)用伶棒。比如開發(fā)一個(gè)調(diào)用相機(jī)拍照功能,js是不能獨(dú)立調(diào)用相機(jī)拿到返回值的彩库,我們需要提供給js調(diào)用相機(jī)的方法肤无,插件的監(jiān)聽方法,拿到照片之后骇钦,將照片打成二進(jìn)制返回給前端處理一系列的流程宛渐。將這些功能封裝在一個(gè)工具類里,然后暴漏給js一個(gè)接口,這就是插件窥翩。

就以打電話為例開發(fā)一個(gè)插件

上一篇?jiǎng)?chuàng)建的工程中 www文件夾下 index.html文件中增加如下代碼

1.(刪除系統(tǒng)給的index 或者修改也行业岁,寫個(gè)按鈕出來)??


2.實(shí)現(xiàn)打電話方法


3.運(yùn)行一下大概是下面的樣子,點(diǎn)擊有個(gè)彈窗



到這為止寇蚊,cordova加載index笔时,包括修改前端的工作已經(jīng)完成,下面實(shí)現(xiàn)交互仗岸。

下面在www目錄下創(chuàng)建實(shí)體文件夾 plugins一定要是實(shí)體文件夾(創(chuàng)建出來是藍(lán)色的)

在plugins文件夾中 創(chuàng)建 cordova.plugins.MCallACall 文件夾同時(shí)這個(gè)文件夾也是插件id允耿,文件夾最后部分最好對(duì)應(yīng)OC類名,不容易出錯(cuò)

在 cordova.plugins.MCallACall中創(chuàng)建一個(gè)www文件夾

在www里創(chuàng)建 js文件 ?MCallACall.js

目錄結(jié)構(gòu)如下:

在js文件中 實(shí)現(xiàn)如下代碼:


第一句是定義了插件id扒怖,一般都是和文件夾名加方法名

第二句類似 OC中 import 引入cordovajs中exec方法

第三句定義一個(gè)js函數(shù)塊较锡,供外部調(diào)用,名稱就是上面id定義的

第四句是定義調(diào)用方法名盗痒,call 傳入兩個(gè)監(jiān)聽(回掉)方法 一個(gè)是成功一個(gè)是失敗蚂蕴,第三個(gè)參數(shù)是電話號(hào)碼

第五句是exec中定義的返回值格式,前兩個(gè)成功和失敗函數(shù)俯邓,第三個(gè)參數(shù)OC類名骡楼,第四個(gè)參數(shù)OC方法名,第五個(gè)參數(shù)是數(shù)組看成,將所有入?yún)⒍继砑拥綌?shù)組中傳入

最后返回的還是 插件名

在插件銜接js中實(shí)現(xiàn)如下代碼:


都是一樣的格式君编,exports中按著 plugin_list格式給出插件調(diào)用信息

第一行 id 就是之前在插件js中定義好的

第二行 文件路徑

第三行 是插件id

第五行 供給外部調(diào)用的方法名

下面是metadata 插件版本信息

隨便寫個(gè) 1.0.0

在config.xml 中實(shí)現(xiàn)如下代碼 :


這里配置加載插件信息,必須配置

在工程plugin文件夾中 創(chuàng)建OC類繼承自CDVPlugin

類名方法名在插件js中都定義好了川慌,必須要同名

所以類名叫MCallACall 方法名叫?call 方法還要增加個(gè)參數(shù)吃嘿,參數(shù)類型是CDVInvokedUrlCommand

這個(gè)框架里都有提供,可以仔細(xì)看一看

大概代碼如下

頭文件:


實(shí)現(xiàn):


如果正常的話梦重,運(yùn)行一下兑燥,就可以實(shí)現(xiàn)撥打電話功能,功能圖就不放了直接撥打出去琴拧,有個(gè)確認(rèn)降瞳。

代碼都很簡單,應(yīng)該看的懂蚓胸,自己打印一下 command中都有什么 callbackid是什么挣饥,還有argument里都有什么。這些都是開發(fā)項(xiàng)目必備的功能沛膳,后續(xù)我也會(huì)講扔枫。

這只是一個(gè)js調(diào)原生的簡單插件實(shí)現(xiàn)原理,后續(xù)復(fù)雜的都可以通過這個(gè)擴(kuò)展锹安,可能有些插件還要回調(diào)給前端信息短荐,比如撥打電話是否成功倚舀,拿回來了什么信息,是否失敗忍宋,失敗的原因痕貌。等等

尤其注意的是,插件代碼原則上都必須運(yùn)行在子線程糠排,cordova已經(jīng)給出了默認(rèn)后臺(tái)線程self.commandDelegaterunInBackground

但是有很多OC方法必須在主線程實(shí)現(xiàn)舵稠,比如打電話,比如更新UI操作乳讥,比如數(shù)據(jù)持久化等等柱查,我建議就像上面實(shí)現(xiàn)那樣寫,將需要在主線程運(yùn)行的代碼通過gcd返回主線程執(zhí)行云石。如果插件運(yùn)行過于耗時(shí)唉工,spa內(nèi)容就會(huì)卡頓,嚴(yán)重影響用戶體驗(yàn)汹忠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淋硝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宽菜,更是在濱河造成了極大的恐慌谣膳,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铅乡,死亡現(xiàn)場離奇詭異继谚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)阵幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門花履,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挚赊,你說我怎么就攤上這事诡壁。” “怎么了荠割?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵妹卿,是天一觀的道長。 經(jīng)常有香客問我蔑鹦,道長夺克,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任嚎朽,我火速辦了婚禮懊直,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘火鼻。我一直安慰自己室囊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布魁索。 她就那樣靜靜地躺著融撞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粗蔚。 梳的紋絲不亂的頭發(fā)上尝偎,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音鹏控,去河邊找鬼致扯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛当辐,可吹牛的內(nèi)容都是我干的抖僵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼缘揪,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼耍群!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起找筝,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤蹈垢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后袖裕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曹抬,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年急鳄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谤民。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡攒岛,死狀恐怖赖临,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灾锯,我是刑警寧澤兢榨,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站顺饮,受9級(jí)特大地震影響吵聪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兼雄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一吟逝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赦肋,春花似錦块攒、人聲如沸励稳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驹尼。三九已至,卻和暖如春庞呕,著一層夾襖步出監(jiān)牢的瞬間新翎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工住练, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留地啰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓讲逛,卻偏偏與公主長得像亏吝,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妆绞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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