使用 Plugman 创建 Ionic 插件
Posted
技术标签:
【中文标题】使用 Plugman 创建 Ionic 插件【英文标题】:Ionic Plugin Creation Using Plugman 【发布时间】:2018-11-02 06:35:27 【问题描述】:我是 Ionic 和 Cordova 的新手。我需要使用 Cordova 为 ionic 创建一个插件并将其集成到示例 ionic 应用程序中。
我遵循的步骤是:
使用 plugman 创建了一个简单的 ionic 插件
plugman create --name SayHello --plugin_id cordova-plugin-sayhello -plugin_version 0.0.1
在上面的插件中添加了android平台。
cd SayHello/ && plugman platform add --platform_name android
现在我想将此插件集成到我的 ionic 应用中。
ionic cordova plugin add ../SayHello
在我的 Home.ts 中的 ionic 应用程序中,我编写了这段代码。
declare var cordova: any;
var success = function(result)
console.log(result);
var failure = function(err)
console.log(err);
cordova.plugins.HelloWorld.coolMethod("SayHelloTest", success, failure);
问题是我无法在 ionic 应用程序中调用成功或失败的任何函数。
如果我从成功中调用函数 doSomething:
var success = function(result)
doSomething(result);
显示错误 doSomething 函数未找到。只能在控制台打印。
【问题讨论】:
【参考方案1】:您需要将成功创建为类函数,并将其作为绑定函数发送或调用内部箭头。
declare var cordova:any;
class HomePage
//constructor etc...
doSomething(res:any)
success(result)
this.doSomething(result);
failure(err)
//..
//call
callCordovaFunction()
cordova.plugins.HelloWorld.coolMethod("SayHelloTest", this.success.bind(this), this.failure.bind(this));
//or
cordova.plugins.HelloWorld.coolMethod("SayHelloTest", (res)=>this.success(res),(err)=>this.failure(err));
【讨论】:
非常感谢,但我仍然无法在 UI 元素中设置文本。即使没有错误。 您需要在另一个问题中显示minimal reproducible example。没有足够的信息来说明为什么文本没有在 UI 中显示【参考方案2】:创建插件后,理论上也可以使用plugman 导入它,以便执行您想要执行的操作。我读过的命令是:
plugman install --platform android --project projectPlatformPath --plugin pluginPath
无论如何,当我尝试时,这对我不起作用,并且还使您的插件使用起来不舒服。使用gulp
为您的插件创建一个离子包装器并将其复制到您项目的node_modules/@ionic-native
中可能是一个更好的主意。这样您就可以像使用 ionic cordova plugin add cordova-plugin-name-here
添加的其他插件一样注入它。这也是 Ionic 推荐的方式。
详细的说明写在这里会很长。只需访问 this tutorial 并按照分步说明进行操作即可。
【讨论】:
【参考方案3】:要安装plugman,您的机器上必须安装node。然后你可以在你的环境中的任何地方运行以下命令来全局安装plugman,这样它就可以从任何目录中使用:
$ npm install -g plugman
安装 Plugman 并创建 Cordova 项目后,您可以开始向平台添加插件:
$ plugman create --name SayHello --plugin_id cordova-plugin-sayhello -plugin_version 0.0.1
【讨论】:
以上是关于使用 Plugman 创建 Ionic 插件的主要内容,如果未能解决你的问题,请参考以下文章