基于 Cordova 插件创建节点模块
Posted
技术标签:
【中文标题】基于 Cordova 插件创建节点模块【英文标题】:Create Node Module based off of Cordova Plugin 【发布时间】:2017-09-04 16:48:48 【问题描述】:我目前正在开发一个应用程序,如果该应用程序不在设备上,则需要打开另一个应用程序或带您到相应的商店下载。我正在使用 Ionic 3 和 Angular 4。
为了打开应用程序,我使用了 Ionic 的 Native InAppBrowser,这对于 ios 和 android 的 Twitter 和 Facebook 等应用程序都非常有效。它也适用于我试图在 iOS 上打开的当前应用程序。但是,在 android 上,我得到了意图错误。我能够通过原生打开应用程序来解决这个问题,这涉及到我在 InAppBrowser 中打开已转译的代码并将本机代码放在那里。这可能是一个解决方案,但我不喜欢它,因为这意味着如果 InAppBrowser 要更新,我必须记住重新添加我的代码。
这给了我编写自己的插件的想法。我按照本指南创建插件:https://taco.visualstudio.com/en-us/docs/createplugintutorial/ 非常棒,除了测试插件时。我不知道如何在 Angular 中引用插件。我想创建一个与我的插件一起使用的节点模块,以便我可以正确测试。我已经尝试查看当前正在导出插件的节点模块,但我无法通过代码来找出我需要的具体内容。
我希望有人可以向我展示为 Angular 创建插件和节点模块的正确方法,就像 Ionic 使用他们的本机代码所做的那样。
谢谢, 亚历克斯
【问题讨论】:
【参考方案1】:我真的不知道您创建自己的node_module
是什么意思,但这就是您在 Ionic 中使用自定义 cordova-plugin 的方式(我在这里使用 In-App-Browser 插件作为示例):
declare var NameOfTheJsModule // tell typescript that this js-module exists
可以在插件的plugin.xml中的name属性下找到js-module的名称:
<js-module src="www/inappbrowser.js" name="inappbrowser">
...
</js-module>
所以在这种情况下:
delcare var inappbrowser;
并使用它:
this.inappbrowser.show();
Ionic 对 ionic-native
所做的是将插件的 API 包装到 typescript 类中,以便为您提供类型(这使得在许多情况下使用插件更容易)并使 Angular 更改检测正常工作。
【讨论】:
感谢您的回复。那么在这种情况下,代码会在我使用 ionic serve 时运行,还是仅在我构建平台时才有效?我尝试了上面的代码,它告诉我在使用 ionic serve 运行时它是未定义的。 好吧,当您运行ionic serve
时,cordova 不可用,因此插件将不可用。要在浏览器中使用您的插件,您必须添加浏览器平台:ionic cordova platform add browser
并运行:ionic cordova run browser
。您还必须在 plugin.xml
中指定浏览器平台。
只是想让你知道我能够成功创建一个cordova插件并使用它。再次感谢您的帮助!
太棒了!没问题,很乐意提供帮助!以上是关于基于 Cordova 插件创建节点模块的主要内容,如果未能解决你的问题,请参考以下文章
cordova android 6.3.0 的相机和地理定位插件问题
在 Ionic 2 中使用第三方 cordova 插件和 TypeScript