1

Phonegapプラグインに関するヘルプが必要です。

まず、結果ハンドラー関数、エラーハンドラー関数、ネイティブクラスの名前とネイティブ関数名への参照、およびパラメーターの配列を含むphonegap.exec()を使用してネイティブコードを呼び出すJSファイルがあります。私の質問は:与えられた指定されたパラメータで関数(ネイティブメソッド)を呼び出すことが可能かどうかです。

つまり、phonegapプラグインファイル(.h&.m)で1-java void myMethod(int a、string b){}のように引数とそのタイプ(NSInteger、NSString)を指定できますか

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

それとも、PhonegapまたはObjective Cで指定されているとおりですか?

2-そして、この場合、withDictはどういう意味ですか?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]); 

このようにメソッドを呼び出したい:

なぜ引数を(文字列配列要素として)入れてから取り出し、分割して文字列から正しい要素を取得する必要があるのですか?

助けてくれてありがとう

4

1 に答える 1

1

以下に追加した例は、複数の文字列を使用した Phonegap での Email プラグインの実装です。NSNumbers またはその他の種類の引数を識別するために、いつでも私の文字列コードを置き換えることができます。

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;

そして最後に、Mutable 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 クラスにオプションと引数があれば、それらを自由に取得したり、必要なデータ型に解析したりできます。

于 2013-05-20T14:46:40.240 に答える