Ionic2 调用Custom Cordova Plugin方法

APP升级到Ionic2之后,如何调用自己写的pulgin,一直测试不成功,现记录这一经过。

plugin目前可以分为3类,A类是ionic-native自带的,可以直接导入Typescript类,直接使用,比较简单易用,目前插件大部分是这一类。

B类是纯js库类,具体的使用方法可以参考这个官方文档,目前还没有遇见这种情况,等遇见了再来记录。

C类是我们自己写的cordova plugin,一般都是用在Ionic1版本中的,问题由此产生,在ionic2中是如何应用的呢?

方法步骤:

1.和ionic1的方法一样,我们使用之前所开发的插件,将自己写的plugin加载到我们的ionic2项目中来,还是安装在plugins目录下,没有变。

2.在要使用的ts类中,调用插件方法即可

1   upgradeApp()
2   {
3          let url ="yourUrl";
4         (<any>window).plugins.appUpgrade.downLoad(url,(success) => { console.log(success); },(err) => { } );
5   }

3.打包apk,安装测试,成功调用接口并下载下来apk.

测试过不成功的两种方法如下

声明cordoval变量:

 1 import { Component } from '@angular/core';
 2 import { NavController,AlertController,LoadingController } from 'ionic-angular';
 3 import { LoginPage } from '../login/login';
 4 import { CommonService } from '../../providers/baseService/CommonService';
 5 import { AppVersion } from 'ionic-native';
 6 
 7 declare var cordova:any;
 8 
 9 @Component(
10 {
11   selector: 'page-about',
12   templateUrl: 'about.html'
13 })

方法中调用

 1   upgradeApp()
 2   {
 3           let url ="yourUrl";
 4           if (typeof cordova !== 'undefined')
 5           {
 6                   cordova.plugins.appUpgrade.downLoad(url,(success) => { console.log(success); },(err) => { } );
 7           }
 8           else
 9           {
10                 //do nothing
11           }
12   }  

可以成功打包生成apk,但是接口没有反应,无法下载url对应的apk.

第二种不成功的方法大同小异,只是将声明的变量改为自己的插件名appUpgrade.

 1 import { Component } from '@angular/core';
 2 import { NavController,AlertController,LoadingController } from 'ionic-angular';
 3 import { LoginPage } from '../login/login';
 4 import { CommonService } from '../../providers/baseService/CommonService';
 5 import { AppVersion } from 'ionic-native';
 6  declare var appUpgrade:any;
 7 @Component(
 8 {
 9   selector: 'page-about',
10   templateUrl: 'about.html'
11 })
1   upgradeApp()
2   {
3           let url ="yourUrl";
4           appUpgrade.downLoad(url,(success) => { console.log(success); },(err) => { } );
5   }

仍旧是不成功的.

这两种方法不成功的原因具体不是很清楚,怀疑命名空间不正确造成的。

参考文章:

1.ionic2 如何使用自定义插件

2.Using Cordova Plugins in Ionic 2 with Ionic Native

3.Ionic and Typings

原文地址:https://www.cnblogs.com/crazyguo/p/6405462.html