2013-08-05 18 views
5

iOSアプリケーションのPhonegap/Cordova(バージョン2.9.0)カスタムプラグインの作成に取り掛かりました。/JS /フォルダ、その有する符号 iOS用のPhoneGapプラグインが失敗しましたpluginJSON

  1. 私はHelloPlugin.jsファイルを作成し、WWWの下でそれをコピーします:私はHelloPlugin.hとHelloPluginを作成

    var HelloPlugin = 
    { 
        callNativeFunction: function (success, fail, resultType) 
        { 
        alert('a'); 
        return Cordova.exec(success, fail, "HelloPlugin", "nativeFunction", ['1']); 
        } 
    }; 
    
  2. 私の手順は次のとおりです。 pluginsフォルダ、コードの下メートルファイル:

    // .h 
    #import <Cordova/CDVPlugin.h> 
    
    @interface HelloPlugin : CDVPlugin 
    
    - (void)nativeFunction:(CDVInvokedUrlCommand*)command; 
    
    @end 
    
    // .m 
    
    #import "HelloPlugin.h" 
    
    @implementation HelloPlugin 
    
    - (void)nativeFunction:(CDVInvokedUrlCommand*)command 
    { 
        NSLog(@"Hello, this is a native function called from PhoneGap/Cordova!"); 
    } 
    
    @end 
    
  3. は、私は、ファイルをconfig.xmlに次のコードを追加しました最後に210

  4. <feature name="HelloPlugin"> 
        <param name="ios-package" value="CDVPlugin"/> 
    </feature> 
    
    は、私は次のようにindex.htmlをを修正:

    1. スクリプトの参照が追加されました。 ()
    2. JSコードを追加:

      function callNativePlugin(returnSuccess) 
          { 
          HelloPlugin.callNativeFunction(nativePluginResultHandler, nativePluginErrorHandler, returnSuccess); 
          } 
      
          function nativePluginResultHandler (result) { 
           alert("SUCCESS: \r\n"+result); 
          } 
      
          function nativePluginErrorHandler (error) { 
           alert("ERROR: \r\n"+error); 
          } 
      
    3. つのボタンが追加され、関数が呼び出さ:

      "callNativePlugin( '成功');" "callNativePlugin( 'error');"

私はこれは私がプラグインを起動するために行う必要がある唯一の必須のものであると思います。

問題:このアプリケーションの実行中に、コンソールでpluginJSONエラーが発生しています。

出力:

- [CDVCommandQueue executePending] [ライン116]がpluginJSON = [ "HelloPlugin2650437"、 "HelloPlugin"、 "nativeFunction"、 [ "1"、 "1" に失敗しました "1"

私がやった間違いは、私に知らせてください。私はあなたの努力を本当に感謝します。ここで私を助けてください。

答えて

7

最初に飛び出したのは、あなたのプラグインパッケージ名です。 iOSのクラス名は "HelloPlugin"にする必要があります。

<param name="ios-package" value="HelloPlugin"/> 

プラグインを参照する新しい方法の目的の1つは、特にAndroidでのプラグイン名の柔軟性と下位互換性を可能にすることです。例:

<feature name="HelloPlugin"> 
    <param name="ios-package" value="HelloCDVPlugin"/> 
    <param name="android-package" value="com.phonegap.plugins.HelloCDVPlugin"/> 
</feature> 

"HelloCDVPluginは" あなたのiOSのクラス名と "com.phonegap.plugins.HelloCDVPlugin" であなたのAndroidのクラス名です

。あなたが変更する必要がリンク

https://github.com/cristobal/phonegap-ios-datepicker-plugin

以下からあなたが例を見つけることができますjsの

cordova.define("cordova/plugin/hello", 
function (require, exports, module) { 

var exec = require('cordova/exec'); 

function greet(name, win, fail) { 
    exec(win, fail, "Hello", 
     "greet", [name]); 
} 

module.exports = { 
    greet: greet 
} 
} 
); 

exec(this.callbacks.onSuccess, this.callbacks.onError, "Hello", "greet", [defaults]); 

にcordova.exec変更するためのコードの下

+2

それは私のために働いた... :) –

+0

それは私のために働いた..あまりにも! :) –

+0

私のために働いてくれてありがとう。私は複数のバージョンのCordovaを使っていたので、同じプラグインでこの問題が発生しました。 – satheeshwaran

1

使用あなたの要件に応じてコード。

関連する問題