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 }
仍旧是不成功的.
这两种方法不成功的原因具体不是很清楚,怀疑命名空间不正确造成的。
参考文章: