7

アプリで PhoneGap を使用できるようになることを望んでいます。Javascript からネイティブ メソッドを呼び出せるように、カスタム プロトコル/プラグインを作成する必要があります。ネイティブ コードが返されたときに、Javascript で成功関数を呼び出すことができることはわかっています。

私ができる必要があるのは、ネイティブ コードから JavaScript 関数を呼び出すことです。基本的に、アプリはローカル ネットワーク経由で OSX コンパニオン アプリに接続し、OSX アプリが iOS アプリにデータを送信するときに、それが Objective C メソッドで処理されるときに、結果を PhoneGap/javascript に送信して何かを実行できるようにする必要があります。 WebView でそれを使用します。

これは可能ですか?javascript からネイティブを呼び出すことに関する情報しか見つけることができませんでした。

ありがとう、トーマス

以下の Answer のコードを使用します。

MyPhoneGapPlugin.m

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
    NSLog(@"Connected To %@:%i.", host, port);

    NSString* jsString = [NSString stringWithFormat:@"alert(connected to: %@);", host];
    [theWebView stringByEvaluatingJavaScriptFromString:jsString];

    [self readWithTag:2];
}

「不明なレシーバー「theWebView」というエラーが表示されるのは、「UIWebView」のことですか?

更新: 答えが見つかりました: phonegap ヘルパーを使用すると、次のようなものを書くことができます...

    [super writeJavascript:@"alert('connected');"];
4

4 に答える 4

10

を使用して、ネイティブ コードから JavaScript を簡単に呼び出すことができますUIWebView

[webView stringByEvaluatingJavaScriptFromString:@"myJSFunction()"];

関数の結果を JS 関数の引数として使用するには:

NSString *stringData = getStringData(); // however you get it
[webView stringByEvaluatingJavaScriptFromString:
 [NSString stringWithFormat:@"myJSFunction(%@)", stringData]];
于 2011-10-10T23:44:01.740 に答える
4

これを実現するためのPhoneGapヘルパーが見つかりました...次を使用してwebViewにjavascriptを書き込みます。

    [super writeJavascript:@"alert('it works');"];
于 2011-10-24T23:09:28.853 に答える
2

あなたはこれを試してみるべきです、

[webView stringByEvaluatingJavaScriptFromString:@"sendSelectedDate()"];
于 2012-09-13T19:11:32.760 に答える
0

これはうまくいきますか?

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DisplayWebContent/Tasks/JavaScriptFromObjC.html

このページからの抜粋:

引数を指定して JavaScript 関数を呼び出すこともできます。次のような JavaScript 関数を作成したとします。

function addImage(image, width, height) { ... }

その目的は、Web ページに画像を追加することです。これは 3 つの引数で呼び出されます: image、画像の URL。width、画像の画面幅。高さ、画像の画面の高さ。このメソッドは、Objective-C から 2 つの方法のいずれかで呼び出すことができます。1 つ目は、WebScriptObject ブリッジを使用する前に引数の配列を作成します。

id win = [webView windowScriptObject];



NSArray *args = [NSArray arrayWithObjects:
                 @"sample_graphic.jpg",
                 [NSNumber numberWithInt:320],
                 [NSNumber numberWithInt:240],
                  nil];

[win callWebScriptMethod:@"addImage"
            withArguments:args];
于 2011-10-10T23:43:39.503 に答える