基于 Cordova 插件创建节点模块

Posted

技术标签:

【中文标题】基于 Cordova 插件创建节点模块【英文标题】:Create Node Module based off of Cordova Plugin 【发布时间】:2017-09-04 16:48:48 【问题描述】:

我目前正在开发一个应用程序,如果该应用程序不在设备上,则需要打开另一个应用程序或带您到相应的商店下载。我正在使用 Ionic 3 和 Angular 4。

为了打开应用程序,我使用了 Ionic 的 Native InAppBrowser,这对于 iosandroid 的 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 插件无法加载

cordova android 6.3.0 的相机和地理定位插件问题

在 Ionic 2 中使用第三方 cordova 插件和 TypeScript

在基于 Cordova 的 Xcode 项目中自动添加构建阶段

没有 Ionic 的设备上的 Cordova 热重载

cordova+vue混合式开发App