2013-08-05 26 views
5

iOS uygulaması için Phonegap/Cordova (sürüm 2.9.0) özel eklenti oluşturma üzerinde çalışıyorum./Js/klasör, onun sahip kod ios geri dönüşü için PhoneGap eklentisi FAILED pluginJSON

  1. Bir HelloPlugin.js dosyasını oluşturulan ve www altında kopyalamak: Ben HelloPlugin.h ve HelloPlugin yarattı

    var HelloPlugin = 
    { 
        callNativeFunction: function (success, fail, resultType) 
        { 
        alert('a'); 
        return Cordova.exec(success, fail, "HelloPlugin", "nativeFunction", ['1']); 
        } 
    }; 
    
  2. Benim adım aşağıdaki gibidir. eklentileri klasörü altındaki m dosyaları, kod:

    :

    // .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. Ben dosyayı config.xml için kod aşağıdaki eklendi Sonunda 210

  4. <feature name="HelloPlugin"> 
        <param name="ios-package" value="CDVPlugin"/> 
    </feature> 
    
    aşağıdaki şekilde index.html modifiye:

    1. Senaryo referans ekledi.()
    2. JS kodunun ekledi:

      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. İki düğme eklendi ve fonksiyon denir:

      "callNativePlugin ('başarı');" "callNativePlugin ('error');"

Biliyorum bu eklentiyi etkinleştirmek için yapmanız gereken tek gerekli şey umut.

Sorun: Uygulamayı çalıştırırken, konsolda FAILED pluginJSON hatası alıyorum.

Çıkış:

- [CDVCommandQueue executePending] [Hat 116] pluginJSON = [ "HelloPlugin2650437", "HelloPlugin", "nativeFunction", [ "1", "1" başarısız "1" ] ]

Yaptığım hata, lütfen bana bildirin. Çabalarını gerçekten takdir ediyorum. Lütfen bana yardım edin.

cevap

7

Dışarı çıkan ilk şey, eklenti paketinizin adıdır. "HelloPlugin" olan iOS sınıf adınız olmalı. eklenti başvuran yeni yol amacı

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

Bir esneklik ve özellikle Android'de eklenti isimleri geriye dönük uyumluluk sağlamaktır. Örnek:

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

"HelloCDVPlugin" iOS sınıf adı ve "com.phonegap.plugins.HelloCDVPlugin" dir Android sınıf adıdır

.Sen aşağıdaki linkten örnek bulabilirsiniz cordova.exec için

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

+2

Benim için çalıştı ... :) –

+0

Bu benim için de çalıştı .. thanx !! :) –

+0

Benim için çok çalıştı teşekkürler. Ben aynı eklenti için bana bu sorunu verdi Cordova çoklu sürümleri ile çalışıyordum. – satheeshwaran

1

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 
} 
} 
); 

için kodunun altında Kullanımı ve değiştirmek

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

değiştirebilir zorunda ihtiyacınıza göre kod.

İlgili konular