我运行项目时找不到Cordova IOS插件

时间:2016-01-19 10:48:13

标签: ios iphone xcode cordova cordova-plugins

我创建了一个cordova项目cordova创建sampleApp com.sample.app sampleApp 然后我做了cordova平台添加ios然后cordova插件添加cordova-plugin-device

文件:

平台/ IOS / ios.json

在ios.json中,我在json下面添加了一个名为sayHelloPlugin的自定义插件

{
    "prepare_queue": {
        "installed": [],
        "uninstalled": []
    },
    "config_munge": {
        "files": {
            "config.xml": {
                "parents": {
                    "/*": [
                        {
                            "xml": "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>",
                            "count": 1
                        },
                        {
                            "xml": "<feature name=\"sayHelloPlugin\"><param name=\"ios-package\" value=\"sayHelloPlugin\" /></feature>",
                            "count": 1
                        }
                    ]
                }
            }
        }
    },

}

平台/ IOS / sampleApp / config.xml中

在config.xml中我也添加了

<feature name="sayHelloPlugin">
        <param name="ios-package" value="sayHelloPlugin" />
 </feature>

WWW / JS / index.js 我将对本机目标c函数的调用添加为

cordova.exec(sayHelloSuccess, sayHelloFailure, "SayHelloPlugin", "sayHello", [name]);

function test(){        
     alert("Received Event");
}

function sayHelloSuccess(data){
    alert("Success");
}

function sayHelloFailure(data){
    alert("Error");
}

我的目标课程看起来像

#import "SayHelloPlugin.h"

@implementation SayHelloPlugin

- (void)sayHello:(CDVInvokedUrlCommand*)command{

    NSString *responseString =
        [NSString stringWithFormat:@"Hello %@", [command.arguments objectAtIndex:0]];

    CDVPluginResult *pluginResult =
        [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:responseString];

    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}

@end

当我做一个cordova构建ios时,构建成功了。 当我模拟并运行时,我收到一条错误消息

2016-01-19 05:39:44.017 sampleApp[21225:1854134] CDVPlugin class sayHelloPlugin (pluginName: SayHelloPlugin) does not exist.
2016-01-19 05:39:44.018 sampleApp[21225:1854134] ERROR: Plugin 'SayHelloPlugin' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2016-01-19 05:39:44.018 sampleApp[21225:1854134] -[CDVCommandQueue executePending] [Line 159] FAILED pluginJSON = ["SayHelloPlugin535510559","SayHelloPlugin","sayHello",["Hello"]]

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

错误清楚地表明找不到sayHelloPlugin。您演示了如何添加设备插件,但不是特定插件。

答案 1 :(得分:-2)

创建自定义插件,您可能需要使用Plugman。

1)安装Plugman

$npm install -g plugman

2)开始使用CLI中的Plugman创建自定义插件,命令如下:

plugman create --name pluginName --plugin_id "com.pluginName" --plugin_version 1.0.0 --project "PLUGIN_DIR/com.pluginName"

3)添加自定义插件的平台

plugman platform add --platform_name ios

4)创建并添加package.json

注意:如果它达到“EACCESS:权限被拒绝”,请打开..&#34; 请添加&#39; sudo&#39;在命令前面

plugman createpackagejson pluginName

参考文档链接: https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/index.html