2013-08-05 13 views
5

Pracuję nad niestandardowym tworzeniem wtyczek Phonegap/Cordova (wersja 2.9.0) na iOS. Moje kroki są następujące:Wtyczka PhoneGap dla iOS powraca NIEPOWODZONA wtyczka JSON

  1. stworzyłem plik HelloPlugin.js i skopiować je na www/js/folderu, jego konieczności Kod:

    var HelloPlugin = 
    { 
        callNativeFunction: function (success, fail, resultType) 
        { 
        alert('a'); 
        return Cordova.exec(success, fail, "HelloPlugin", "nativeFunction", ['1']); 
        } 
    }; 
    
  2. stworzyłem HelloPlugin.h i HelloPlugin. pliki m poniżej folderze wtyczek, 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. I dodaje następujący kod do pliku config.xml:

    <feature name="HelloPlugin"> 
        <param name="ios-package" value="CDVPlugin"/> 
    </feature> 
    
  4. W końcu zmodyfikowane index.html w następujący sposób:

    1. odniesienia Script dodaje.()
    2. kod JS dodane: dodano

      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. dwa przyciski i funkcja o nazwie:

      "callNativePlugin ('sukces');" "callNativePlugin (" błąd ");"

Mam nadzieję, że jest to jedyne wymagane rzeczy muszę zrobić do aktywacji wtyczki.

Problem: Podczas uruchamiania aplikacji pojawia się komunikat o błędzie pluginJSON na konsoli.

wyjściowa:

- [CDVCommandQueue executePending] [Linia 116] Błędy pluginJSON = [ "HelloPlugin2650437", "HelloPlugin" "nativeFunction" [ "1", "1" "1" ] ]

Jakiego błędu dokonałem, proszę dać mi znać. Naprawdę doceniam twoje wysiłki. Proszę, pomóżcie mi tutaj.

Odpowiedz

7

Pierwszą rzeczą, która wyskoczyła, jest nazwa pakietu wtyczek. Powinna to być nazwa twojej klasy na iOS, która jest "HelloPlugin".

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

Jednym z celów nowego sposobu odwoływania wtyczki jest umożliwienie elastyczność i kompatybilność wsteczną nazw wtyczek zwłaszcza na Android. Przykład:

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

Gdzie "HelloCDVPlugin" to nazwa klasy iOS i "com.phonegap.plugins.HelloCDVPlugin" jest Android nazwa klasy.

+2

To zadziałało dla mnie ... :) –

+0

To działało również dla mnie .. thanx !! :) –

+0

Pracowałem dla mnie bardzo dziękuję. Pracowałem z wieloma wersjami Cordova, które dały mi ten problem dla tej samej wtyczki. – satheeshwaran

1

skorzystać z poniższego kodu dla 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 zmienić cordova.exec do

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

można znaleźć przykład z poniższego linku

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

Trzeba zmodyfikować kod zgodnie z wymaganiami.