Как использовать плагин для PhoneGap - PullRequest
0 голосов
/ 12 января 2012

Я новичок в разработке PhoneGap.Я создал один класс плагинов для iphone, который содержит метод шифрования.Я хочу использовать этот файл .h и .m для шифрования моих данных и получения данных из моего файла классов на моей html-странице.Но я понятия не имею, как вызвать функцию класса в моем файле JavaScript в результате моей страницы.Пожалуйста, у любого есть идея, как вызвать любой файл класса и его метод в javascript для приложения iphone, тогда помогите мне. Я жду ответа.

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Смотрите ссылку, на которую ответил Павел. Для быстрого бега есть несколько способов сделать это, но мой обычно заканчивается примерно так:

Javascript:

PhoneGap.exec("NameOfObjectiveCFile.nameofMethod","parameter1", "parameter2");

Цель C:

-(void)nameOfMethod:(NSMutableArray*)paramArray withDict: (NSMutableDictionary*) options
    {
       //Do your stuff
       //Access your params you sent in javascript by doing the following
       NSString *parameter1 = [paramArray objectAtIndex:0];
       //Send stuff back to Javascript using a callback function
       NSString *jsCallBack = [NSString stringWithFormat:@"nameofJavascriptFinishedMethod(%@)",parameterToSendBack];
       [self.webview stringByEvaluatingJavaScriptFromString:jsCallBack];

    }

Вернуться к Javascript:

function nameofJavascriptFinishedMethod(parameterFromObjectiveC)
{
   //Do stuff with information from objective C
}

Также помните, что вам нужно зарегистрировать свой плагин в вашем Phonegap.plist Надеюсь, это поможет, удачи.

Обновление : если вы хотите, чтобы ваш html отправлял информацию вашему плагину, я бы использовал html-форму или кнопку или вызвал бы действие, которое вызовет вашу функцию javascript (первый выше) и передаст ваши переменные собраны из ваших полей. См. ссылку для основ формы.

Обновление 2
1) Создайте новый проект phonegap в xcode и постройте, чтобы получить папку www
2) Добавьте ваши существующие файлы C для целей шифрования в проект
3) Создайте новый целевой класс C, назовите его EncryptPlugin (см. Шаг 5 для следующего)
4) Отредактируйте файл PhoneGap.plist
а) добавить новую запись под Плагины
б) назовите его EncryptPlugin String EncryptPlugin
5) Заголовочный файл для EncryptPlugin должен выглядеть следующим образом

#import <Foundation/Foundation.h>
#import <UIKit/UIkit.h>

#ifdef PHONEGAP_FRAMEWORK
#import <PhoneGap/PGPlugin.h>
#else
#import "PGPlugin.h"
#endif

@interface EncryptPlugin : PGPlugin {



}
-(void) useMyEncryptionFiles:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options;
@end

6) Файл реализации должен выглядеть следующим образом

#import "EncryptPlugin.h"
#import "EncryptPacket.h"


@implementation EncryptPlugin


//phonegap magic -- basically ignore
-(PGPlugin*) initWithWebView:(UIWebView*)theWebView
{
    self = (PdfCreator*)[super initWithWebView:theWebView];
    return self;
}

//The method that your javascript is going to call
-(void) useMyEncryptionFiles:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options
{
    //This gives you your string
    NSString *stringFromJavascript = [paramArray objectAtIndex:0];

    EncryptPacket *ep = [[EncryptPacket alloc] init];

    NSString *encryptedString = [ep encryptRequest:stringFromJavascript];

    NSLog(@"encryptedString = %@",encryptedString);
}




@end

7) В вашем HTML-JavaScript вызовите функцию, используя что-то вроде этого p1.html

<head><script type="text/javascript" src="encryptdata.js"></script></head>
<body>
<input type="password" name="confirmPassword" id="confirmPassword" value="" />
<input type="button" value="FetchR" onclick="fetchRelation()"/>
</body> 



encryptdata.js  
function fetchRelation()
{
    var getvalue=document.getElementById('confirmPassword').value;

    //what is next step....... to send the data to the plugin class
    PhoneGap.exec("EncryptPlugin.useMyEncrptionFiles",getValue);
}

Это должно помочь вам начать. Если вы хотите отправить материал обратно в свой HTML-JavaScript, используйте функцию, указанную выше:

NSString *jsCallBack = [NSStringstringWithFormat:@"nameofJavascriptFinishedMethod(%@)",parameterToSendBack];
           [self.webview stringByEvaluatingJavaScriptFromString:jsCallBack];

Надеюсь, это поможет, вы сможете понять это с помощью этих инструкций. Возможно, они не идеальны, но у меня не было времени собрать все вместе и скомпилировать, используя ваш код. Удачи.

1 голос
/ 12 января 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...