2013-08-05 9 views
5

मैं आईओएस ऐप के लिए फोनगैप/कॉर्डोवा (संस्करण 2.9.0) कस्टम प्लगइन निर्माण पर काम कर रहा हूं। मेरे चरणों इस प्रकार हैं:आईओएस लौटने के लिए फोनगैप प्लगइन FAILED प्लगइन जेएसओएन

  1. मैं एक HelloPlugin.js फ़ाइल बनाई और/js/फ़ोल्डर, अपने होने कोड www के तहत इसे कॉपी:

    var HelloPlugin = 
    { 
        callNativeFunction: function (success, fail, resultType) 
        { 
        alert('a'); 
        return Cordova.exec(success, fail, "HelloPlugin", "nativeFunction", ['1']); 
        } 
    }; 
    
  2. मैं HelloPlugin.h और HelloPlugin बनाया। प्लग इन फ़ोल्डर के अंतर्गत मीटर फ़ाइलें, कोड:

    :

    // .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

    <feature name="HelloPlugin"> 
        <param name="ios-package" value="CDVPlugin"/> 
    </feature> 
    
  4. अंत में मैं निम्नलिखित तरीके से index.html संशोधित:

    1. स्क्रिप्ट संदर्भ गयी।()
    2. जे एस कोड कहा:

      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 ('सफलता');" "कॉलनेटिव प्लगइन ('त्रुटि');"

मुझे आशा है कि यह केवल आवश्यक चीजें मैं प्लगइन को सक्रिय करने के लिए क्या करने की जरूरत है।

समस्या: ऐप चलाने के दौरान, मुझे कंसोल पर FAILED प्लगइन जेएसओएन त्रुटि मिल रही है।

आउटपुट:

- [CDVCommandQueue executePending] [लाइन 116] विफल pluginJSON = [ "HelloPlugin2650437", "HelloPlugin", "nativeFunction", [ "1", "1", "1" ] ]

क्या गलती मैंने किया है, तो कृपया मुझे बताएं। मैं वास्तव में आपके प्रयासों की सराहना करता हूं। कृपया मेरी मदद करो।

उत्तर

7

पहली चीज जो बाहर निकलती है वह आपके प्लगइन पैकेज का नाम है। यह आपका आईओएस क्लास नाम होना चाहिए जो "हैलोप्लगिन" है।

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

प्लगइन को संदर्भित करने का नया तरीका करने के उद्देश्य से एक लचीलापन और विशेष रूप से 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 वर्ग के नाम है।

+2

यह मेरे लिए काम किया ... :) –

+0

यह मेरे लिए भी काम किया .. thanx !! :) –

+0

मेरे लिए काम किया बहुत बहुत धन्यवाद। मैं कॉर्डोवा के कई संस्करणों के साथ काम कर रहा था जिसने मुझे एक ही प्लगइन के लिए यह मुद्दा दिया था। – 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 
} 
} 
); 

के लिए नीचे दिए गए कोड का उपयोग करें और बदल cordova.exec को

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

आप लिंक नीचे से उदाहरण मिल सकते हैं

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

आप संशोधित करना आपकी आवश्यकता के अनुसार कोड।

संबंधित मुद्दे