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

  • 相关阅读:
    什么是DMI,SMBIOS,符合SMBIOS规范的计算机的系统信息获取方法
    Android init.rc执行顺序
    JVM-类的四种载入方式
    Intellij-创建Maven项目速度慢
    Intellij-工程目录下隐藏不想显示的文件和文件夹
    JVM-类加载机制(Java类的生命周期)
    Git-远程仓库的使用
    JavaSE-反射-获取类或者对象的四种方法
    工厂模式(Factory Pattern)
    Redis-配置认证密码
  • 原文地址:https://www.cnblogs.com/menchao/p/8352687.html
Copyright © 2011-2022 走看看