0

github で利用可能な phonegap/cordova プラグインの例がたくさんあることは知っていますが、プラグインの構築方法の間に多くの矛盾が見られます。構造は (大部分) 同じように見えますが、コードと実装はほとんどそれぞれ異なっているように見えます。それは私にいくつかの質問をさせます。

  • 2.9 のドキュメントでは、構成でプラグインを宣言するアプローチを使用するように言われていますが、このアプローチを使用するようにというビルド警告が表示されます。両方を使用する必要がありますか?

  • javascript で、プラグインを宣言/インスタンス化する正しい方法は何ですか?

  • window.MyPlugin.myMethod を介してプラグインのメソッドを参照しますか、それとも単に window.myMethod ですか?

もっと質問がありますが、コードは素晴らしいでしょう。

iOSプラットフォーム用のcordova 2.9用のカスタムプラグインの完全に単純な例を持っている人はいますか?

4

1 に答える 1

1

これは、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>

TestPlugin.h:

#import <Cordova/CDV.h>

@interface TestPlugin : CDVPlugin

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

@end

TestPlugin.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" />
于 2013-08-30T19:06:08.117 に答える