如何在离子项目中导入cordova自定义插件?
Posted
技术标签:
【中文标题】如何在离子项目中导入cordova自定义插件?【英文标题】:How import cordova custom plugin in ionic project? 【发布时间】:2017-05-28 15:46:54 【问题描述】:我以这种模式在我的项目 ionic 3 中添加我的自定义插件:
ionic cordova 插件添加 /path/to/custom/plugin
home.ts
import Component from '@angular/core';
import NavController from 'ionic-angular';
declare var className: any;
@Component(
selector: 'page-home',
templateUrl: 'home.html'
)
export class HomePage
constructor(public navCtrl: NavController)
className.plugins.ClassName.methodName("======> WORK");
plugin.xml
<js-module src="www/ClassName.js" name="ClassName">
<clobbers target="className" />
</js-module>
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="ClassName">
<param name="ios-package" value="ClassName"/>
</feature>
</config-file>
<header-file src="src/ios/ClassName.h" />
<source-file src="src/ios/ClassName.m" />
</platform>
ClassName.js
function ClassName()
ClassName.prototype.methodName = function(echo, successCallback, errorCallback)
cordova.exec(successCallback, errorCallback, "ClassName", "methodName", [echo]);
;
module.exports = new ClassName();
类名.m
#import "ClassName.h"
@implementation ClassName
-(void)methodName:(CDVInvokedUrlCommand *)command
NSString* echo = [command.arguments objectAtIndex:0];
NSLog(@"%@", echo);
@end
类名.h
#import <Cordova/CDVPlugin.h>
@interface ClassName : CDVPlugin
-(void)methodName:(CDVInvokedUrlCommand *)command;
@end
我构建项目并进入 xcode 尝试,但模拟器只显示黑屏并且没有看到 NSLog 的日志... 我该如何解决?导入自定义插件的正确方法是什么?谢谢
【问题讨论】:
还没有构建插件.. 但是你需要在platform.ready().then ()=>)
中调用插件
ionicframework.com/docs/api/platform/Platform/#ready
好!现在开始工作,谢谢。
太棒了!将其添加为答案
【参考方案1】:
在调用插件之前,您需要确保平台已加载。
使用platform.ready()
constructor(public navCtrl: NavController,public platform:Platform)
this.platform.ready().then(()=>
className.plugins.ClassName.methodName("======> WORK");
);
【讨论】:
以上是关于如何在离子项目中导入cordova自定义插件?的主要内容,如果未能解决你的问题,请参考以下文章
Cordova:如何将现有的自定义插件 2.3 添加到项目 3.0 中