如何使用插件进行phonegap

时间:2012-01-12 17:22:33

标签: iphone cordova

我是phonegap开发的新手。我为iphone创建了一个插件类,其中包含一些加密方法。我想使用.h和.m文件来加密我的数据并从我的html页面中的类文件中获取数据。但我不知道如何在我的javascript文件中调用该类函数作为我的页面的结果。请任何人知道如何在javascript for iphone应用程序中调用任何类文件及其方法然后帮助我。我正在等待回复。

2 个答案:

答案 0 :(得分:3)

查看Paul回答的链接。对于快速运行,有几种方法可以做到这一点,但我的通常会结束这样的事情。

使用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函数的操作(上面的第一个)和传递从您的字段收集的变量。有关表单基础知识,请参阅此link

更新2
1)在xcode中创建新的phonegap项目并构建以获取www文件夹
2)将现有的加密目标C文件添加到项目
中 3)创建新的目标C类,称之为EncryptPlugin(参见下一步骤5)
4)编辑PhoneGap.plist文件
  a)在插件下添加一个新条目   b)将其命名为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 :(得分:1)