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