2013-08-30 4 views
0

Я знаю, что есть целая куча примеров плагинов phonegap/cordova, доступных на github, но я вижу много несоответствий между тем, как создаются плагины. Структура выглядит одинаково (по большей части), но код и реализация кажутся разными почти для каждого. Мне остается задавать несколько вопросов.Phonegap/Cordova 2.9 Создание пользовательского плагина. Любые рабочие примеры?

  • 2,9 документы говорят, использовать подход объявить плагин в конфигурации, но я получаю построить предупреждения, которые говорят, чтобы использовать этот подход. Должен ли я использовать оба?

  • В javascript, что является правильным способом объявить/создать экземпляр плагина?

  • Я ссылаюсь на метод моего плагина через window.MyPlugin.myMethod или это просто метод window.myMethod?

У меня есть еще вопросы, но код будет потрясающим.

У кого-нибудь есть абсолютно простой пример пользовательского плагина для cordova 2.9 для платформы iOS?

ответ

1

Вот очень простой плагин, который я написал несколько дней, просто нужно было протестировать построение плагина Cordova на базе iOS.

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" /> 
+0

Во-первых, это отличный ответ. Я очень ценю сжатый, но тщательный код. Спасибо. Я столкнулся с той же проблемой, с которой я боролся несколько дней. Когда я нажимаю кнопку теста, ничего не происходит. Возможно, я не искал ошибок в нужном месте. Однако, похоже, ничего не видно на консоли. Есть идеи? – QuailAndQuasar