基于Cordova插件创建节点模块

时间:2017-09-04 16:48:49

标签: angular cordova ionic-framework

我目前正在开发一个应用程序,其中要求是打开另一个应用程序,或者如果应用程序不在设备上,则将您带到相应的商店进行下载。我正在使用Ionic 3和Angular 4.

为了打开应用程序,我开始使用Ionic的Native InAppBrowser,这适用于iOS和Android,适用于Twitter和Facebook等应用。它也适用于我试图在iOS上打开的当前应用程序。但是,在android上,我得到了意图错误。我能够通过本机打开应用程序来解决这个问题,这涉及到我在InAppBrowser中打开已转换的代码并将本机代码放在那里。这可以是一个解决方案,但我不喜欢它,因为这意味着如果InAppBrowser要更新,我将不得不记得重新添加我的代码。

这给了我写自己的插件的想法。我按照本指南创建了一个插件:https://taco.visualstudio.com/en-us/docs/createplugintutorial/ 除了测试插件外,它很棒。我不知道如何在Angular中引用插件。我想创建一个与我的插件一起使用的节点模块,以便我可以正确测试。我已经尝试查看当前导出插件的节点模块,但我无法通过代码来查找我需要的具体内容。

我希望有人可以向我展示为角色创建插件和节点模块的正确方法,以及Ionic对其原生代码的处理方式。

谢谢, 亚历

1 个答案:

答案 0 :(得分:1)

我真的不知道你在创建自己的node_module时的意思,但这就是你在Ionic中使用自定义cordova插件的方式(我在这里使用In-App-Browser插件作为例子) ):

declare var NameOfTheJsModule // tell typescript that this js-module exists

您可以在名称属性下的插件的plugin.xml中找到js-module的名称:

<js-module src="www/inappbrowser.js" name="inappbrowser">
  ...
</js-module>

所以在这种情况下:

delcare var inappbrowser;

并使用它:

this.inappbrowser.show();

Ionic对ionic-native的做法是将插件的API包装到typescript类中,以便为您提供类型(这使得插件在许多情况下更容易使用)并使Angular更改检测正常工作。