我正在迅速用iOS的ionic编写我的自定义插件,但出现以下错误:

ERROR: Method 'initialize:' not defined in Plugin 'RabbitMqPlugin'

我已进行搜索以找到解决方案,但我无法弄清楚问题出在哪里。

下面是我的代码。

plugin.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    id="cordova-plugin-rabbitmq"
    version="0.0.1">
    <name>RabbitMqPlugin</name>
    <js-module src="www/plugin.js" name="RabbitMqPlugin">
       <clobbers target="RabbitMqPlugin" />
    </js-module>

<!-- ios -->
<dependency id="cordova-plugin-cocoapod-support" />
<dependency id="cordova-plugin-add-swift-support" />
<platform name="ios">
    <pods-config ios-min-version="9.0" use-frameworks="true">
    </pods-config>
    <pod name="RMQClient" />

    <config-file target="config.xml" parent="/*">
        <feature name="RabbitMqPlugin">
            <param name="ios-package" value="CDVDevice"/>
        </feature>
    </config-file>

    <source-file src="src/ios/CDVHttpRequest.swift" />
    <source-file src="src/ios/CDVRabbitMq.swift" />
    <source-file src="src/ios/CDVRabbitMqPlugin.swift" />
</platform>
</plugin>

www文件夹中的 plugin.js 文件:
var exec = require('cordova/exec');

var PLUGIN_NAME = 'RabbitMqPlugin';

 var RabbitMqPlugin = {
    initialize: function(phrase, cb) {
    exec(cb, null, PLUGIN_NAME, 'initialize', [phrase]);
 }
};

module.exports = RabbitMqPlugin;

src / ios文件夹中的 CDVRabbitMqPlugin.swift 文件:
import Foundation

@objc(RabbitMqPlugin) class RabbitMqPlugin : CDVPlugin {
var mRabbit:rabbitMQ!;

@objc(initialize:)
func initialize(_ command: CDVInvokedUrlCommand){
    var pluginResult = CDVPluginResult(
        status: CDVCommandStatus_ERROR
    );

    let token = command.arguments[0] as! String;

    if (token.characters.count > 0) {
        mRabbit = rabbitMQ(mToken: token);

        pluginResult = CDVPluginResult(
            status: CDVCommandStatus_ERROR
        );
    }

    self.commandDelegate!.send(
        pluginResult,
        callbackId: command.callbackId
    )
  }
}

我已经安装了cordova-plugin-add-swift-support模块以支持swift。
我已经为Android添加了自定义插件ionic插件,并成功实现了我的ionic项目。

希望您能够帮助我。谢谢

最佳答案

您在plugin.xml中的功能是错误的,应该是

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

另外,如果您不使用CDVClassname命名类,则不要命名包含以CDV开头的类的文件,不确定在Swift中是否会失败,而最好使用与它们包含的类相同的名称命名Swift文件。

10-07 19:03
查看更多