zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Android 开发学习进程0.19 webview 的使用
    2020年4到6月—7家公司面试总结(3家已拿offer)
    iOS今日头条第3轮面试回忆
    [搬运]Dart之枚举中使用扩展
    Proguard 常用规则
    shiro安全框架
    Android服务的AIDL跨进程(程序)操作
    Android——服务的实例,银行服务
    Android四大组件之服务————服务的生命周期和启动方式
    Android 程序间的广播和Manifest找不到(解决方法)
  • 原文地址:https://www.cnblogs.com/menchao/p/8352687.html
Copyright © 2011-2022 走看看