Ionic2使用第三方cordova插件(非Ionic2官方支持的native cordova插件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ionic2使用第三方cordova插件(非Ionic2官方支持的native cordova插件)相关的知识,希望对你有一定的参考价值。

Ionic2官方提供了丰富的native cordova插件,比如:Camera、Device等等,使用方式也很简单:

1、添加插件支持:ionic plugin add cordova-plugin-device;

2、在页面ts文件中声明: import { Device } from ‘ionic-native‘;

3、在相关方法中调用:

getDeviceInfo(){

  console.log(‘Device UUID is: ‘ + Device.uuid);

}

Ionic2native组件虽然丰富,但是实际开发过程中,我们总是会遇到使用非官方支持cordova组件的情况,比如:微信支付、支付宝等。

以一个获取本机IP地址的cordova插件为例,简单讲解一下非官方支持的cordova插件的用法:

1、添加插件:ionic plugin add cordova-plugin-networkinterface;

2、打开插件配置文件的my-iconic2-project\plugins\cordova-plugin-networkinterface\config.xml:

.....

<js-module src="www/networkinterface.js" name="networkinterface">
  <clobbers target="window.networkinterface" />
</js-module>

......

可以看到该插件的target为window.networkinterface,所以,在app运行期该插件对象应该声明并绑定在window对象上。那么,我们使用此类插件的方式应该为:

index.ts:

import { Component } from ‘@angular/core‘;
import { NavController, NavParams } from ‘ionic-angular‘;

declare var networkinterface: any;

 

@Component({
selector: ‘page-index‘,
templateUrl: ‘index.html
})
export class IndexPage {

constructor(public navCtrl: NavController, public navParams: NavParams) {}

  ionViewDidLoad() {
    console.log(‘ionViewDidLoad IndexPage‘);
  }

  getIPAddress(){

    if(‘undefined‘ != typeof networkinterface){
      networkinterface.getIPAddress(function(ip){
        alert(ip);
      });

    }

  }

}

 

不过我还看到stackoverflow有一种实现方式:

declare var cordova: any;

....

 

getIPAddress(){

  if(‘undefined‘ != typeof cordova){

    cordova.plugins.networkinterface.getIPAddress(function(ip){

      alert(ip);

    });

  }

}

我认为这种方式,使用config.xml为如下形式的cordova插件:

.....

<js-module src="www/networkinterface.js" name="networkinterface">
  <clobbers target="cordova.plugins.networkinterface" />
</js-module>

......

不过由于时间原因,我并没有去验证。

 

另外: 测试要在模拟器或者手机环境。

 

 

 

 

 

 

 

以上是关于Ionic2使用第三方cordova插件(非Ionic2官方支持的native cordova插件)的主要内容,如果未能解决你的问题,请参考以下文章

ionic2 调用自定义插件之研究

在 ionic2 中添加自定义用户定义的 Cordova 插件,但打字稿不起作用

Ionic 2:将 cordova 插件与具有自己命名空间的 Typescript 一起使用

ionic2/cordova自定义插件集成aar包

IONIC 2 文件插件

如何在 ionic 2 中创建覆盖页面?