Phonegap插件

我需要一些关于Phonegap插件的帮助:

首先,我有一个JS文件,它使用phonegap.exec()调用本机代码,该文件包含结果处理函数,错误处理函数,对本机类名称和本机函数名称的引用以及一组参数。 我的问题是:如果可以用给定的指定参数调用函数(本地方法)?

这意味着:在我的phonegap插件文件(.h和.m)1-可以指定参数和它们的类型(NSInteger,NSString)像Java无效myMethod(int a,字符串b){}

- (void)myMethod:(NSMutableArray)arguments withDict:(NSMutableDictionary)options;

还是由Phonegap或Objective C指定?

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

4-为什么我的代码应该是这样的?

- (void)myMethod:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options {NSString * callbackID = [arguments pop]; NSString * myParam = @“”;

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

我想像这样调用我的方法:

为什么我会把我的参数(作为一个字符串数组元素),然后把它拿出来,把它分开以从String中获得正确的元素)?

非常感谢您的帮助


好的,你可以这样做......我在下面添加的例子是Phonegap中的Email插件的实现,它带有多个字符串。 你总是可以用我的字符串代码来标识NSNumber或其他类型的参数。

在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类中有了选项和参数,就可以自由地检索它们或将它们解析为所需的数据类型。

链接地址: http://www.djcxy.com/p/64387.html

上一篇: Phonegap Plugins

下一篇: ERROR: Attempting to call cordova.exec() before 'deviceready'. Ignoring