2013-01-18 66 views
1

我需要相关的PhoneGap插件一些帮助:PhoneGap的插件

首先,我必须使用phonegap.exec()包含的结果处理函数,错误处理功能,在参考其调用本机代码JS文件本地类的名​​称和本机函数名称以及一组参数。我的问题是:如果可以用给定的指定参数调用函数(本地方法)?

这意味着:在我的PhoneGap的插件文件(.H & .M) 1 - 我可以指定像Java 无效myMethod的参数及其类型(NSInteger的,的NSString)(INT一个,字符串B){}

- (无效)的MyMethod:(NSMutableArray的)参数withDict:(的NSMutableDictionary)选择;

还是由Phonegap或Objective C指定?

2-它是什么意思在这种情况下?我可以添加这个吗?

4-为什么我的代码应该是这样的? (NSMutableArray *)参数withDict:(NSMutableDictionary *)options NSString * callbackID = [arguments pop];(NSMutableDictionary *) NSString * myParam = @“”;

NSArray *arrayArguments = [[arguments objectAtIndex:0] componentsSeparatedByString:@"|"]; 
    NSString *stringArgument = ([arArguments objectAtIndex:0]); 

我想引用我的方法是这样的:

为什么要我把我的论点(字符串数组),然后把它拿出来,把它分解得到字符串中的右元素)?

帮助

回答

1

确定这里非常感谢是你如何做到这一点...我在下面添加的例子是在PhoneGap的电子邮件插件的执行情况,多个字符串。你总是可以用我的字符串代码来标识NSNumber或其他类型的参数。

In JS ::

首先我用它们的值创建参数。 。 。

var attachmentData = {}; 
attachmentData.data = userData; 
attachmentData.fileName = fileName; 
var mailData = {}; 
mailData.toRecipients = ""; 
mailData.subject = "Exporting Backup for user data"; 
mailData.body = "User data for application. Please find the attachment containing the data from the last week."; 
nativeMail(attachmentData, mailData); 

现在我们称之为包中的所有这些资料有PhoneGap的插件,并把它发送到插件类

function nativeMail(attachmentData, mailData){ 
    e_args = {}; 
    if(mailData.toRecipients) 
    e_args.toRecipients = mailData.toRecipients; 
    if(mailData.subject) 
    e_args.subject = mailData.subject; //"Hello World"; 
    if(mailData.body) 
    e_args.body = mailData.body; 
    //call to phonegap plugin for native mail iOS 
    e_args.attachmentFileName = attachmentData.fileName; 
    e_args.datatoattach = attachmentData.data; 
    cordova.exec(null, fail, "EmailComposer", "showEmailComposer", [e_args]); 
} 

功能现在EmailComposer.h文件

- (void) showEmailComposer:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; 

最后,如何从Mutablle Dictionary/Array中获取这些参数并检索我们的字符串值。

- (void) showEmailComposer:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options 
{ 
    NSString* toRecipientsString = [options valueForKey:@"toRecipients"]; 
    NSString* ccRecipientsString = [options valueForKey:@"ccRecipients"]; 
    NSString* bccRecipientsString = [options valueForKey:@"bccRecipients"]; 
    NSString* subject = [options valueForKey:@"subject"]; 
    NSString* body = [options valueForKey:@"body"]; 
    NSString* isHTML = [options valueForKey:@"bIsHTML"]; 
. . . . . . 
} 

这是唯一的办法。它与Phonegap本身处理从JavaScript Web应用程序传递到本机类的数据的方式有关。它不能改变。 MutableDictionary或MutableArray将处理您需要的任何类型的数据。没有限制。但是,只有使用上述格式才能传递此数据。一旦你有了选择和参数在。m类,您可以自由地检索它们或将它们解析为您需要的数据类型。