4

コルドバのチュートリアルを読みましたが、十分な情報が得られているかどうかはわかりません。

更新されたコードを表示するように編集:

私のコードをお見せしましょう:

config.xmlから:

<plugin name="someMethod" value="MyPluginClass" />

Plugin.hの場合:

#import <Cordova/CDV.h>

@interface MyPluginClass : CDVPlugin

- (void)someMethod:(CDVInvokedUrlCommand*)command;

@end

Plugin.mの場合:

#import "Plugin.h"

@implementation MyPluginClass

- (void)someMethod:(CDVInvokedUrlCommand *)command
{
    NSLog(@"YOU ARE READING THIS NATIVELY FROM A PLUGIN");
}

@end

表示される最初のhtmlページは「index.html」と呼ばれます

cordova.exec()関数を呼び出すスクリプトを実行するだけの空白のhtmlページが必要です。そうする私の試みは失敗しました。スクリプトで何か間違ったことをしたのか、他の場所で間違ったことをしたのかはわかりませんが、ここに私のindex.htmlがあります。

<!DOCTYPE html>
<html>
<head>
    <title>Cordova Device Ready Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova-2.3.0.js"></script>
    <script type="text/javascript" charset="utf-8">

        // Call onDeviceReady when Cordova is loaded.
        //
        // At this point, the document has loaded but cordova-2.3.0.js has not.
        // When Cordova is loaded and talking with the native device,
        // it will call the event `deviceready`.
        //
        function onLoad() {
            document.addEventListener("deviceready", onDeviceReady, false);
        }

        // Cordova is loaded and it is now safe to make calls Cordova methods
        //
        function onDeviceReady() {
            // Now safe to use the Cordova API
            document.addEventListener("deviceready", function() {
                                      cordova.exec(null,null,"MyPluginClass","someMethod",[]);
                                      }, false);
        }
        </script>
    </head>
    <body onload="onLoad()">
    </body>
</html>

次のエラーログが表示されます。

2013-01-17 11:36:31.782 CCT [1293:907]エラー:プラグイン'MyPluginClass'が見つからないか、CDVPluginではありません。config.xmlでプラグインのマッピングを確認してください。

2013-01-17 11:36:31.787 CCT [1293:907]-[CDVCommandQueueexecutePending][103行目]FAILEDpluginJSON = ["INVALID"、 "MyPluginClass"、 "someMethod"、[]]

4

1 に答える 1

6

devicereadyイベントが発生するまで、cordovaに電話をかけることはできません。行う:

 document.addEventListener("deviceready", function() {
    cordova.exec(null,null,"MyPluginClass","someMethod",[]);
 }, false);

編集:

上記の呼び出し例では、次のようなObjective-Cクラスが必要です。

@interface MyPluginClass : CDVPlugin

- (void)someMethod:(CDVInvokedUrlCommand*)command;

@end

の呼び出しに一致するクラスの名前とメソッドの名前に注意してくださいcordova.exec

別の編集:

config.xmlのようになります。

<plugin name="MyPluginClass" value="MyPluginClass" />

(これらは必ずしも同じである必要はありませんがname、javascript呼び出しの3番目の引数の参照とvalue一致し、Objective-Cクラスの名前と一致する必要があります。

iOS用のプラグインの開発に関する完全なドキュメントについては、ガイドをご覧ください。

于 2013-01-17T01:08:09.730 に答える