Cordova开发-2 自定义插件

一.创建插件

使用命令行创建,可以快速生成模板,节省手写编码时间。

plugman create --name MyFirstPlugin  --plugin_id  cordova-plugin-MyFirstPlugin  --plugin_version 1.0.0

--name 插件名称,建议大写,会生成类的名称

--plugin_id   将来安装删除等需要用到的

--plugin_version  版本号,根据版本情况写

二.plugin.xml说明

通过命令行方式会在plugin目录下会生成,如图

 

plugin.xml 是配置相关android ios 等平台的信息,这是一个非常重要的配置文件,在js中能否调用到插件中的本地方法就需要看这个文件中是否配置正确。

增加如下:

<js-module name="MyFirstPlugin" src="www/MyFirstPlugin.js">
<clobbers target="cordova.plugins.MyFirstPlugin" />
<!-- 前端工程师在使用的时候通过这个 clobbers 去调用www/MyFirstPlugin.js的公开方法 -->
</js-module>

<platform name="ios">
<config-file target="config.xml" parent="/*" >
<feature name="MyFirstPlugin">
<!-- 定义iOS平台下的底层实现类名为 : MyFirstPlugin -->
<param name="ios-package" value="CDVMyFirstPlugin" />
</feature>
</config-file>
<source-file src="src/ios/CDVMyFirstPlugin.m" />
<header-file src="src/ios/CDVMyFirstPlugin.h" />
</platform>

三。代码完善

1.js代码

在上面生成的代码中MyFirstPlugin.js中增加如下,

cordova.define("cordova-plugin-MyFirstPlugin.MyFirstPlugin", function(require, exports, module) {
var exec = require('cordova/exec');

exports.greetHello = function (arg0, success, error) {
exec(success, error, 'MyFirstPlugin', 'greetHello', [arg0]);
};

});

2.iOS代码

定义类CDVMyFirstPlugin,增加如下方法


- (void)greetHello:(CDVInvokedUrlCommand*)command{
NSString* name = [[command arguments] objectAtIndex:0];
NSString* msg = [NSString stringWithFormat: @"Hello, %@", name];

CDVPluginResult* result = [CDVPluginResult
resultWithStatus:CDVCommandStatus_OK
messageAsString:msg];

[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];

}

clobbers 中的target是将来js调用的,为了简化可以写成MyFirstPlugin 

cordova.plugins.MyFirstPlugin.greetHello('厉害了',sucess,error);

 

四。添加平台代码

1.添加平台代码.andorid会默认添加,ios需要手动  (这一步可以手动添加)

plugman platform add --platform_name ios    (plugman platform add --platform_name android)

2.安装package.json

plugman createpackagejson /Users/menchao/Desktop/MyFirstPlugin/MyFirstPlugin  

这个命令可能会有问题,提示pkg is not defined

改为使用npm init初始化 

3.安装插件

cordova plugins add /Users/menchao/Desktop/MyFirstPlugin/MyFirstPlugin 

4.移除插件

cordova plugin remove cordova-plugin-MyFirstPlugin

 

posted @ 2018-01-25 18:46  行藏在我  阅读(155)  评论(0编辑  收藏  举报