用于ios的PhoneGap插件返回FAILED pluginJSON

Lal*_*wal 5 plugins ios cordova

我正在为iOS应用程序开发Phonegap/Cordova(版本2.9.0)自定义插件.我的步骤如下:

  1. 我创建了一个HelloPlugin.js文件并将其复制到www/js /文件夹下,其代码如下:

    var HelloPlugin =
    {
      callNativeFunction: function (success, fail, resultType)
      {
        alert('a');
        return Cordova.exec( success, fail, "HelloPlugin", "nativeFunction", ['1']);
      }
    }; 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我在plugins文件夹下创建了HelloPlugin.h和HelloPlugin.m文件,代码如下:

    // .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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我在config.xml文件中添加了以下代码:

    <feature name="HelloPlugin">
      <param name="ios-package" value="CDVPlugin"/>
    </feature>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 最后我用以下方式修改了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 );
        } 
      
      Run Code Online (Sandbox Code Playgroud)
    3. 添加了两个按钮并调用了函数:

      "callNativePlugin( '成功');" "callNativePlugin( '错误');"

我希望这是激活插件我需要做的唯一必要的事情.

问题:运行应用程序时,我在控制台上收到FAILED pluginJSON错误.

输出:

- [CDVCommandQueue executePending] [第116行] FAILED pluginJSON = ["HelloPlugin2650437","HelloPlugin","nativeFunction",["1","1","1"]]

我做错了什么,请告诉我.我真的很感激你的努力.请帮帮我.

Noo*_*gen 7

跳出来的第一件事是你的插件包名称.它应该是您的iOS类名称,即"HelloPlugin".

  <param name="ios-package" value="HelloPlugin"/>
Run Code Online (Sandbox Code Playgroud)

引用插件的新方法的目的之一是允许插件名称的灵活性和向后兼容性,尤其是在Android上.例:

<feature name="HelloPlugin">
  <param name="ios-package" value="HelloCDVPlugin"/>
  <param name="android-package" value="com.phonegap.plugins.HelloCDVPlugin"/>
</feature>
Run Code Online (Sandbox Code Playgroud)

"HelloCDVPlugin"是您的iOS类名称,"com.phonegap.plugins.HelloCDVPlugin"是您的Android类名.