[ios開(kāi)發(fā)Cordova插件] - 插件打包及映射js代碼

引言:

在前篇教程中,開(kāi)發(fā)了一個(gè)oc與js互相調(diào)用的alert插件
但遺留下的問(wèn)題是h5開(kāi)發(fā)者在調(diào)用我們插件時(shí),并不能通過(guò)js語(yǔ)言來(lái)調(diào)用
以及該如何將插件打包給h5開(kāi)發(fā)者安裝至其項(xiàng)目中
這里我們繼續(xù)上次的插件做打包及js代碼映射,最好看一下上面鏈接的前篇
本文僅針對(duì)ios開(kāi)發(fā)者,初次涉及cordova插件開(kāi)發(fā)
</br>

教程目錄如下,請(qǐng)根據(jù)自己進(jìn)度自行選擇閱讀
1.創(chuàng)建插件打包文件夾及必要文件
2.編寫JS代碼(oc語(yǔ)法映射至js語(yǔ)法)
3.配置config.xml文件
4.添加本地插件,通過(guò)js的語(yǔ)法去調(diào)用插件.

總目錄:Cordova插件開(kāi)發(fā)及打包完全指北[ios]

</br>

一.創(chuàng)建插件打包文件夾及必要文件

在桌面處創(chuàng)建插件打包文件夾com.amCordova.amAler(遵守命名規(guī)范),并創(chuàng)建子文件夾及子文件如下圖,將之前開(kāi)發(fā)插件的代碼(AMAlertHelper.h 及.m)復(fù)制到ios文件夾下
請(qǐng)創(chuàng)建好這樣的結(jié)構(gòu)后再進(jìn)行后續(xù)動(dòng)作

ACDE5845-C2DF-4D5A-9621-9A40CC3EF6DF.png

</br>

二.編寫JS代碼

之前在index.html調(diào)用插件時(shí),用的是字符串形式的方法名.這里寫一個(gè)將方法映射至JS調(diào)用的代碼
其原理就是創(chuàng)建一個(gè)JS對(duì)象指向我們的OC對(duì)象 并且給JS對(duì)象創(chuàng)建一個(gè)實(shí)例方法指向我們的OC方法

打開(kāi)之前創(chuàng)建的AlertHelper.js文件,并進(jìn)行編寫代碼如下

var exec = require("cordova/exec");

//定義一個(gè)類名為AlertHelper的對(duì)象構(gòu)建函數(shù)
function AlertModel() {};

//給AlertModel添加一個(gè)js方法jsAlertShow
//映射至之前寫的方法上 ocAlertModel是我們給OC類命名的實(shí)例對(duì)象名稱
//showAlertWithTitle是我們OC的方法
//option是入?yún)?AlertModel.prototype.jsAlertShow = function (success,fail,option) {
     exec(success, fail, 'ocAlertModel', 'showAlertWithTitle', option);
};
               
//new一個(gè)AlertModel的類對(duì)象,并賦值給module.exports
var alertModel = new AlertModel();
module.exports = alertModel;

</br>

三.配置plugin.xml文件

配置plugin.xml 就是為了告訴cordova我們的文件路徑在哪,我們的oc類名是什么,oc對(duì)象名是什么,js類名及js對(duì)象名是什么 等等.這樣cordova才能在安裝插件時(shí),正確的進(jìn)行指向.
具體哪些配置對(duì)應(yīng)了什么意思,在代碼中已寫了注釋

打開(kāi)前面創(chuàng)建的plugin.xml文件,并添加如下代碼

<?xml version="1.0" encoding="UTF-8" ?>
<!--    id需要和文件夾名稱保持一致 (插件的id)-->
<plugin xmlns="http://phonegap.com/ns/plugins/1.0"
    id="com.amCordova.amAlertHelper"
    version="1.0.0">
    <engines>
        <engine name="cordova" version=">=3.3.0" />
    </engines>
    
    <name>alertHelper</name>
    <description>插件的描述</description>
    
<!--    對(duì)應(yīng)js映射文件的地址及名稱-->
    <js-module src="www/AlertHelper.js" name="alertModel">
    
<!--    js調(diào)用時(shí)的對(duì)象名稱-->
        <clobbers target="alertModel" />
    </js-module>
    
<!--    ios所有文件的存放地址-->
<!--如果有圖片的話也需要在這里配置,前綴是source-file-->
    <platform name="ios">
        <source-file src="src/ios/AMAlertHelper.m" />
        <header-file src="src/ios/AMAlertHelper.h" />

        <config-file target="config.xml" parent="/widget">
            
<!--            插件映射至ios的類名-->
        <feature name="ocAlertModel">
            <param name="ios-package" value="AMAlertHelper" />
        </feature>
        </config-file>
    </platform>
</plugin>

</br>

四.將本地插件添加至cordova項(xiàng)目中測(cè)試我們的插件

至此為止,插件的開(kāi)發(fā)已經(jīng)全部完成了,所謂的打包其實(shí)就是我們那個(gè)帶配置文件的插件文件夾
新建一個(gè)cordova項(xiàng)目并且將我們的本地插件添加進(jìn)去進(jìn)行測(cè)試一下
1.新建一個(gè)cordova項(xiàng)目并且添加ios工程 (這里不詳說(shuō)了)
2.進(jìn)入到項(xiàng)目的目錄下

cd /Users/aimi/Desktop/cordova/testCordovaDoc

</br>
3.添加剛剛創(chuàng)建的本地插件包

cordova plugin add
/Users/aimi/Desktop/cordova/MyPlugin/com.amCordova.amAlert

</br>

4.進(jìn)行測(cè)試,通過(guò)js的語(yǔ)法去調(diào)用插件. alertModel.jsAlertShow(alertSuccess,alertFail,["Hey,I'm JS!"]);

替換index.html代碼如下

<!DOCTYPE html>
<html>
    <head>
        <title>AMAlert</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
            <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
            <script type="text/javascript" charset="utf-8">
                
            //調(diào)用OC插件方法
            function alertShow() {
                //通過(guò)js代碼調(diào)用
                alertModel.jsAlertShow(alertSuccess,alertFail,["Hey,I'm JS!"]);
            }
            
            //調(diào)用成功的回調(diào)函數(shù)
            function alertSuccess(msg) {
                alert(msg);
            }
            
            //調(diào)用失敗的回調(diào)函數(shù)
            function alertFail(msg) {
                alert('調(diào)用OC失敗: ' + msg);
            }
            </script>
    </head>
    
    <body style="padding-top:50px">
        <button style="font-size:17px;" onclick="alertShow();">調(diào)用OC插件</button> <br>
    </body>
</html>

</br>

結(jié)束:

按照教程一步步走,應(yīng)該已經(jīng)成功了.講真,研究一下cordova插件 也能夠?qū)υ膐c與Js交互有更深的一層了解貌嫡!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磨取,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恭陡,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卫玖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)踊淳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門假瞬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人迂尝,你說(shuō)我怎么就攤上這事脱茉。” “怎么了垄开?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵琴许,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我溉躲,道長(zhǎng)榜田,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任锻梳,我火速辦了婚禮箭券,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疑枯。我一直安慰自己辩块,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布荆永。 她就那樣靜靜地躺著废亭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪具钥。 梳的紋絲不亂的頭發(fā)上豆村,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音骂删,去河邊找鬼掌动。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桃漾,可吹牛的內(nèi)容都是我干的坏匪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撬统,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼适滓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起恋追,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凭迹,失蹤者是張志新(化名)和其女友劉穎罚屋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嗅绸,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脾猛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鱼鸠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猛拴。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚀狰,靈堂內(nèi)的尸體忽然破棺而出愉昆,到底是詐尸還是另有隱情,我是刑警寧澤麻蹋,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布跛溉,位于F島的核電站,受9級(jí)特大地震影響扮授,放射性物質(zhì)發(fā)生泄漏芳室。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一刹勃、第九天 我趴在偏房一處隱蔽的房頂上張望堪侯。 院中可真熱鬧,春花似錦深夯、人聲如沸抖格。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至收奔,卻和暖如春掌呜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坪哄。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工质蕉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翩肌。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓模暗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親念祭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兑宇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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