如何在Ionic 2中使用非原生Cordova插件

3

我正在尝试在Ionic v2应用程序中使用这个cordova插件https://github.com/honza889/cordova-plugin-kiosk

基本上,在使用cordova plugin add https://github.com/honza889/cordova-plugin-kiosk.git命令安装插件后,插件已启用并可用。

但是我找不到使用插件方法的方法。

window.plugins未定义。

cordova也未定义。

我尝试在app.component.ts中导入插件,但我无法确定正确的路径。

是否有人知道如何在Ionic V2应用程序中使用非本机插件(文档和资源已过时或引用了本机插件)。

提前感谢


Andreas Gassmann的答案非常有效。对于那些想知道如何访问window.plugins.{plugin-name}.{property-or-method}的人,尽管编译错误:你可以使用window['plugins']... - Sylvain Martin Saint Léon
2个回答

8

您应该能够在代码中简单地访问KioskPlugin变量。Typescript编译器不会知道这个变量,所以您首先必须声明它:

declare let KioskPlugin: any;

@Component({
  ...
})
export class TestPage {

  ...

  exitKiosk() {
    KioskPlugin.exitKiosk();
  }
}

这就是我所缺少的。我对 TypeScript 不是很熟悉。我在 chrome://inspect 控制台中尝试了插件,但它并不符合我的需求。最终我还是自己写了,非常感谢你的见解,谢谢。 - Sylvain Martin Saint Léon
我已经按照上述指定的方式尝试过了,但仍然无法正常工作,有人可以帮帮我吗?以下是问题所在:file:///android_asset/www/build/polyfills.js:第3行:错误:未捕获(在承诺中):错误:./MyApp类MyApp - 内联模板:0:0引起的KioskPlugin未定义 ReferenceError: KioskPlugin未定义。 - sakshi
你是否在MyApp类文件的开头添加了declare let KioskPlugin: any; - Andreas Gassmann
1
我已经尝试过了,但仍然没有改变。为什么在集成 Cordova 插件(非 Ionic Native 插件)时 Ionic 2 会出现问题?我还在处理其他插件的集成,包括 https://www.npmjs.com/package/cordova-plugin-firebase,但这个也无法正常工作。 - sakshi
你解决了这个问题吗?我正在调查同样的问题。 - Alex
1
我仍然遇到同样的问题,出现了“未捕获(在承诺中)”错误消息。 - Patrick Odum

4
我曾遇到类似的问题,试图访问自定义插件,最终通过这篇文章解决了问题:https://github.com/ionic-team/ionic-native/issues/525
不是使用我的自定义插件变量,而是添加declare var cordova: any;,并通过cordova.plugins.myCustomPlugin.myFunction()调用来解决问题。
实际上,这取决于您想要使用的插件在plugin.xml文件中的设置。更具体地说,取决于<clobbers target="variable.MyCustomPlugin" />标签,在其中确定插件js文件将被导出的位置。另一种可能性是使用declare var window: any;,然后使用window.myCustomPlugin.myFunction()
希望这可以帮助您 ;)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接