Guía de desarrollo de plugin

Un plugin es un paquete de código que permite la webview Cordova dentro de la cual hace que la aplicación para comunicarse con la plataforma nativa en la que se ejecuta. Plugins proporcionan acceso a la funcionalidad de plataforma y dispositivo que está normalmente disponible para aplicaciones basadas en web. Las principales características de Cordova API se implementan como plugins, y muchos otros están disponibles que permiten funciones tales como escáneres de código de barras, comunicación NFC, o adaptar el calendario interfaces. Hay un registro de extensiones disponibles.

Plugins comprenden una única interfaz JavaScript junto con bibliotecas de código nativo correspondiente para cada plataforma soportada. En esencia esto esconde las diversas implementaciones de código nativo detrás de una interfaz común de JavaScript.

A unos pasos esta sección a través de un plugin simple Eco que pasa una cadena de JavaScript a la plataforma nativa y posterior, que puede utilizar como modelo para construir características mucho más complejas. Esta sección analiza la estructura básica del plugin y la interfaz JavaScript de exteriores. Para cada interfaz nativa correspondiente, consulte la lista al final de esta sección.

Además de estas instrucciones, cuando se prepara para escribir un plugin es mejor mirar sobre plugins existentes para orientación.

Construyendo un Plugin

Los programadores de aplicaciones utilizan la CLI plugin add comando (discutido en la interfaz de línea de comandos) para aplicar un plugin para un proyecto. El argumento de este comando es la dirección URL de un repositorio git que contiene el código del plugin. Este ejemplo implementa dispositivo API de Cordova:

    $ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

El repositorio plugin debe cuentan con un alto nivel plugin.xml archivo de manifiesto. Hay muchas maneras de configurar este archivo, los detalles para los que están disponibles en la especificación del Plugin. Esta versión abreviada de la Device plugin proporciona un ejemplo sencillo de usar como un modelo:

    <?xml version="1.0" encoding="UTF-8"?>
    <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
            id="cordova-plugin-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>

El nivel superior plugin de etiqueta id atributo utiliza el mismo formato de dominio reverso para identificar el paquete plugin como las aplicaciones que están agregadas. El js-module etiqueta especifica la ruta de acceso a la interfaz común de JavaScript. El platform etiqueta especifica un conjunto correspondiente de código nativo para la ios plataforma en este caso. El config-file etiqueta encapsula un feature etiqueta que se inyecta en la específica de la plataforma config.xml archivo a la plataforma de la biblioteca de código adicional. El header-file y source-file etiquetas especifican la ruta de acceso a archivos de la biblioteca componentes.

Validación de un Plugin

Puede utilizar la plugman utilidad para comprobar si el plugin se instala correctamente para cada plataforma. Instalar plugman con el siguiente comando de nodo :

    $ npm install -g plugman

Necesita un directorio fuente válida de la aplicación, tales como el nivel superior www directorio incluido en un proyecto generado por CLI predeterminado como se describe en la interfaz de línea de comandos. Asegúrese de que la aplicación de index.html página de inicio de referencia el nombre de JavaScript interfaz del plugin, como si estuviera en el mismo directorio fuente:

    <script src="myplugin.js"></script>

Luego ejecutar un comando como el siguiente para comprobar las dependencias iOS carguen adecuadamente:

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

Para obtener más información sobre plugman Opciones, vea usando Plugman para gestionar Plugins. Para obtener información sobre cómo realmente depurar plugins, consulte interfaz nativa de cada plataforma enumerado en la parte inferior de esta página.

La interfaz de JavaScript

El JavaScript proporciona la interfaz de frente, por lo que es quizás la parte más importante del plugin. Usted puede estructurar JavaScript de tu plugin sin embargo te gusta, pero tiene que llamar a cordova.exec para comunicarse con la plataforma nativa, usando la siguiente sintaxis:

    cordova.exec(function(winParam) {},
                 function(error) {},
                 "service",
                 "action",
                 ["firstArgument", "secondArgument", 42, false]);

Aquí está cómo funciona cada parámetro:

  • function(winParam) {}: Una función de devolución de llamada de éxito. Asumiendo que tu exec llamada se realiza correctamente, esta función se ejecuta junto con cualquiera de los parámetros pasas.

  • function(error) {}: Una función de callback de error. Si la operación no se completa correctamente, esta función se ejecuta con un parámetro opcional de error.

  • "service": El nombre del servicio que llame al lado nativo. Esto corresponde a una clase nativa, para lo cual existe más información en las guías nativas enumeradas a continuación.

  • "action": El nombre de acción para llamar al lado nativo. Esto generalmente corresponde al método de la clase nativa. Consulte a las guías nativos enumerados a continuación.

  • [/* arguments */]: Un conjunto de argumentos que se pasarán en el entorno nativo.

Muestra JavaScript

Este ejemplo muestra una forma de implementar interfaz del plugin JavaScript:

    window.echo = function(str, callback) {
        cordova.exec(callback, function(err) {
            callback('Nothing to echo.');
        }, "Echo", "echo", [str]);
    };

En este ejemplo, el plugin se adhiere a la window objeto como la echo la función, que llamarían a los usuarios plugin como sigue:

    window.echo("echome", function(echoValue) {
        alert(echoValue == "echome"); // should alert true.
    });

Mira a los tres últimos argumentos de la cordova.exec función. Las primeras convocatorias del Echo servicio, un nombre de clase. El segundo pide la echo acción, un método dentro de esa clase. La tercera es una matriz de argumentos que contengan la cadena Eco, que es el window.echo función es el primer parámetro.

El callback de éxito pasó a exec es simplemente una referencia a la función de callback window.echo toma. Si la plataforma nativa despide el callback de error, simplemente pide la devolución de llamada de éxito y pasa una cadena predeterminada.

Interfaces nativas

Una vez se define JavaScript para tu plugin, debes complementarlo con por lo menos una aplicación nativa. Los datos de cada plataforma se enumeran a continuación, y cada uno se basa en el simple ejemplo Eco Plugin anterior:

La plataforma Tizen no admite plugins.

Editorial Plugins

Una vez que desarrollas tu plugin, quizá quieras publicar y compartir con la comunidad. Puedes publicar tu plugin a cualquier npmjs -base de registro, pero el recomendado es el registro de la nueva gestión pública. Lea nuestro editorial plugins guía del MNP.

Nota: registro de plugin de Córdoba se está moviendo a un estado de sólo lectura. publish/ unpublish se han eliminado los comandos de plugman , así que necesitarás usar correspondiente npm comandos.

Otros desarrolladores pueden instalar el plugin automáticamente mediante plugman o CLI Cordova. (Para más detalles sobre cada paso del desarrollo, ver Plugman utilizando para administrar Plugins y la interfaz de línea de comandos).

Para publicar un plugin para registro de MNP necesita seguir los siguientes pasos:

  • crear package.json archivo de tu plugin:

    $ plugman createpackagejson /path/to/your/plugin
    
  • publicarla:

    $ npm adduser # that is if you don't have an account yet
    $ npm publish /path/to/your/plugin
    

Eso es todo!

Ejecutando plugman --help enumera otros basados en el registro de los comandos disponibles.