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