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

引言:

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

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

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

</br>

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

在桌面處創(chuàng)建插件打包文件夾com.amCordova.amAler(遵守命名規(guī)范),并創(chuàng)建子文件夾及子文件如下圖,將之前開發(fā)插件的代碼(AMAlertHelper.h 及.m)復(fù)制到ios文件夾下
請創(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對象指向我們的OC對象 并且給JS對象創(chuàng)建一個(gè)實(shí)例方法指向我們的OC方法

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

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

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

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

</br>

三.配置plugin.xml文件

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

打開前面創(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>
    
<!--    對應(yīng)js映射文件的地址及名稱-->
    <js-module src="www/AlertHelper.js" name="alertModel">
    
<!--    js調(diào)用時(shí)的對象名稱-->
        <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)目中測試我們的插件

至此為止,插件的開發(fā)已經(jīng)全部完成了,所謂的打包其實(shí)就是我們那個(gè)帶配置文件的插件文件夾
新建一個(gè)cordova項(xiàng)目并且將我們的本地插件添加進(jìn)去進(jìn)行測試一下
1.新建一個(gè)cordova項(xiàng)目并且添加ios工程 (這里不詳說了)
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)行測試,通過js的語法去調(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() {
                //通過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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容