javascript - Phonegap/Cordova 2.9 自定义插件创建。有工作示例吗?

标签 javascript ios cordova

我知道 github 上有很多phonegap/cordova 插件的示例,但我发现插件的构建方式之间存在很多不一致之处。结构看起来相同(大部分),但几乎每一个的代码和实现似乎都不同。这让我问了几个问题。

  • 2.9 文档说要使用在配置中声明插件的方法,但我收到了构建警告,说要使用该方法。我应该同时使用两者吗?

  • 在 JavaScript 中,声明/实例化插件的正确方法是什么?

  • 我是通过 window.MyPlugin.myMethod 引用我的插件方法还是只是 window.myMethod?

我还有更多问题,但代码会很棒。

有人有一个绝对简单的适用于 iOS 平台的 cordova 2.9 自定义插件示例吗?

最佳答案

这是我几天前编写的一个非常简单的插件,只是为了测试构建一个基于 iOS 的 Cordova 插件。

JS:

var tester = function() {};

tester.prototype.test = function () {
    cordova.exec(
        function(result) {
            navigator.notification.alert('test plugin returned: '+result);
        },
        function() {
            navigator.notification.alert('test plugin error');
        },
        'TestPlugin',
        'test',
        ['Your test string']
    );
};

if(!window.plugins) {
    window.plugins = {};
}
if (!window.plugins.tester) {
    window.plugins.tester = new tester();
}

调用方式:

<button onclick="window.plugins.tester.test()">TEST PLUGIN</button>

测试插件.h:

#import <Cordova/CDV.h>

@interface TestPlugin : CDVPlugin

- (void)test:(CDVInvokedUrlCommand*)command;

@end

测试插件.m:

#import "TestPlugin.h"
#import <Cordova/CDV.h>

@implementation TestPlugin

- (void)test:(CDVInvokedUrlCommand*)command
{
    CDVPluginResult* pluginResult = nil;
    NSString* testString = [command.arguments objectAtIndex:0];

    if (testString != nil && [testString length] > 0) {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:testString];
    } else {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
    }

    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}

@end

已添加到/platforms/ios/{PROJECT_NAME}/Resources/config.xml:

    <plugin name="TestPlugin" value="TestPlugin" />

关于javascript - Phonegap/Cordova 2.9 自定义插件创建。有工作示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539696/

相关文章:

javascript - bootstrap-datepicker multidate 返回选定日期的所有日期

ios - 用户是否看到 iOS 应用程序中使用的 bundle ID?

Cordova AAD 服务器流身份验证在 Android 和 iOS 上挂起

javascript - Globalize.js - cldr.once 不是函数

javascript - 尝试调用 jQuery 设置的 onchange 方法

javascript - 如何使用 Firebase 数据库(react-native)在 ​​ListView 末尾添加 "Load More"

ios - 我是否需要在同一窗口中为新的 UIView 使用另一个 View Controller ?

ios - Ionic 1 WkWebView iOS - 无法加载资源 : Origin ionic://localhost is not allowed by Access-Control-Allow

javascript - Cordova 使用文件 url 移动文件

android - 输入焦点时 JQuery Mobile 不适合屏幕