Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于iOS的自定义ionic/cordva插件。插件错误中未定义方法_Ios_Swift_Cordova_Ionic Framework - Fatal编程技术网

用于iOS的自定义ionic/cordva插件。插件错误中未定义方法

用于iOS的自定义ionic/cordva插件。插件错误中未定义方法,ios,swift,cordova,ionic-framework,Ios,Swift,Cordova,Ionic Framework,我正在swift中用ionic for iOS编写自定义插件,但出现以下错误: ERROR: Method 'initialize:' not defined in Plugin 'RabbitMqPlugin' 我一直在寻找解决办法,但我不知道问题出在哪里 下面是我的代码 plugin.xml文件: <?xml version="1.0" encoding="UTF-8"?> <plugin xmlns="http://apache.org/cordova/ns/plug

我正在swift中用ionic for iOS编写自定义插件,但出现以下错误:

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>
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
    )
  }
}
为了支持swift,我安装了cordova插件添加swift支持模块。 我已经为Android添加了自定义插件ionic plugin,并成功地实现了我的ionic项目


希望你能帮助我。谢谢

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

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


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

是的,非常感谢。现在我得到了这个:线程警告:['RabbitMqPlugin']使用了'20.425049'ms。插件应该使用后台线程。在检查中,我还发现:未能加载资源:不受支持的URLgap://readyThat这只是一个警告。如果您想摆脱它,可以使用后台线程,请参阅插件指南的线程部分。关于不支持的URL,您是否使用WKWebView插件?在index.html中是否有内容安全策略元标记?如果你有,你能分享吗?其他插件可以工作吗?我已经添加了webview插件。是的,我已经添加了安全元标签,这里是:是的,其他插件可以工作。Content-security-Policy。在发送之前将其更改为
,类似于
pluginResult.setKeepCallbackAsBool(true)
<feature name="RabbitMqPlugin">
    <param name="ios-package" value="RabbitMqPlugin"/>
</feature>