您的位置:首页 > Web前端 > JavaScript

PhoneGap 12 插件开发指南

2014-01-16 09:37 148 查看
插件开发指南

一个插件就是一个注入的软件包,当软件运行的时候,它允许应用程序与本机代码进行通信。插件提供了一种访问那些web应用程序访问不了的设备及平台功能,所有的Cordova API都是通过插件实现的,如条码扫描、NFC进场通信或者定制日历。

插件包含一个能够与特定平台的本地代码通信的接口,这一部分以一个简单echo插件为例进行讲解,它包含一个echo函数,需要从javascript里面接收一个string参数,并返回该string参数给javascript调用者,可以使用该实例建立自己非常复杂的插件。该节讨论了插件的基本结构以及外部的javascript接口。

除了这些指示之外,当要写插件的时候,最好写看看已经存在的插件库。

编译一个插件

应用程序开发者使用 CLI 的 plugin add命令去向项目增加一个插件,该命令的参数是一个包含该插件代码库的URL地址,下面例子是一个实现了Cordova的设备API的插件:

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git[/code] 
注意,插件代码库的顶层目录中必须包含plugin.xml文件,有许多方式可以去配置该文件,详细参考 PhoneGap
13 插件配置标准 ,设备插件这个简单例子的版本提供了一个模型:

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="org.apache.cordova.device" version="0.2.3">
<name>Device</name>
<description>Cordova Device Plugin</description>
<license>Apache 2.0</license>
<keywords>cordova,device</keywords>
<js-module src="www/device.js" name="device">
<clobbers target="device" />
</js-module>
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="Device">
<param name="ios-package" value="CDVDevice"/>
</feature>
</config-file>
<header-file src="src/ios/CDVDevice.h" />
<source-file src="src/ios/CDVDevice.m" />
</platform>
</plugin>


验证插件
可以使用plugman工具去检查插件在每一个平台是是否安装成功,安装plugman的代码为: $ npm install -g plugman
你需要一个有效的app源文件目录,确保index.html home页面引用了插件的javascript接口名称,如果是在同一目录下面:<script src="myplugin.js"></script>
运行下面的代码去测试IOS中的依赖插件是否正确载入:

    $ plugman -platform ios /path/to/my/project/www /path/to/my/plugin


关于plugman的详细内容,请参考:PhoneGap
09 使用Plugman管理Plugins

javascript接口

javascript提供了一个前置接口,它是插件最重要的组成部分。你可以按你喜欢的方式去组织你的插件,但是你需要调用cordova.call()去与本地平台通信,使用下面打代码形式:cordova.exec(function(winParam) {},
function(error) {},
"service",
"action",
["firstArgument", "secondArgument", 42, false]);
这些参数是怎么工作的,如下解释:

function(winParam){}: 成功的回调函数;假定exec()函数调用成功的完成了,该函数会被调用,同时可以传递需要的参数到这个函数;
function(error){}:像上面一样,不过是失败的时候的回调函数;
service:调用本地平台的服务名称;
action:调用本地平台的行为,一般代表的就是插件的函数名称;
[/* arguments */]: 传递给本地环境的参数数组。

javascript例子

本例子展示了实现javascript接口的一种方式:
window.echo = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, "Echo", "echo", [str]);
};


在这个例子中,插件将自己关联到window对象上,作为window对象的echo函数,插件将会像下面一样被调用:
window.echo("echome", function(echoValue) {
alert(echoValue == "echome"); // should alert true.
});


看传递给cordova.exec函数的最后三个参数,第一个代表调用Echo服务,是一个类名;第二个请求一个echo行为,在前面类下面的一个方法;第三个参数是一个echo的字符串,它是window.echo的第一个参数。

成功的回调函数是一个回调函数的银行;如果失败了,通常都是直接传递成功回调函数一个默认的参数值。

本地接口

一旦你定义了你的javascript接口,你必须至少需要一个本地实现。详细信息可以参考下面的:

Amazon Fire OS Plugins
PhoneGap
08 Android 插件介绍
iOS Plugins
BlackBerry 10 Plugins
Windows Phone Plugins

Tizen平台暂时不支持插件

发布插件

一旦开发完成你的插件,你可能想要将其发布到社区与别人进行分享。你可以发布你的插件到cordova注册表(基于npmjs*)或者发布到任何基于npmjs的注册表里。其他的开发者可以自动安装这个插件,通过CLI工具或者plugman工具;

为了发布你的插件,需要进行下面的步骤:$ plugman adduser # that is if you don't have an account yet
$ plugman publish /path/to/your/plugin
原文链接:Plugin Development Guide
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息