我创建了一个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"]]
如何解决这个问题?
答案 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