0、先写个做这个功能的总结吧:
ionic虽说写代码比原生的方便,但是,打包一直让人很难受,打包不成功的主要原因就是某个插件的版本问题,所以做这个功能时让人抓狂,抓狂原因下面讲。
1、多插件自身更新方法
用的最多的就是自身更新,这几个博客就是这么讲的:
https://blog.csdn.net/qq_30737525/article/details/79484055
https://blog.csdn.net/zuoyiran520081/article/details/79317451
需要装5个插件!!
装完后,代码一行没写,就不能打包!!
一个一个插件安装后,打包测试,足足搞了一下午!电脑老了打包太慢了!
最后发现这个问题:
升级需要5个插件:
(1)File (2)Transfer (3)File Opener (4)App Version (5)In App Browser
安装File Opener插件后,会导致打包失败
经测试,File Opener版本1.0.11可以打包成功
然后就拷贝别人代码!然后各种错误不断!做了那么久的努力,还是果断放弃!
2、官方更新插件
在简书的一篇文章的评论中发现了一个官方升级插件!
简书地址:https://www.jianshu.com/p/a41223a0b6a2;
官方插件地址:
https://ionicframework.com/docs/native/app-update/
果然很坑!!app可以打包,可以安装,就是打不开!!一点击就闪退!!
3、算了,别做这么高级了!调用手机的浏览器更新吧
好多软件也都是调用浏览器更新的,也不算low,而且问题也没那么多。
具体如下:
1.安装App Version插件,用来获取版本号,需要真机上才能用
2.调用接口,判断版本号是否要更新
3.如果要更新,调用浏览器更新
获取版本号代码:
this.version = this.appVersion
.getVersionNumber()
.then((version: string) => {
this.version = version;
}
})
.catch(err => {
console.log("getVersionNumber:" + err);
});
升级函数 (删减版,可能有误):
主要函数就是这个跳转:
window.open(url, "_blank", "location=yes");//更新跳转
/**
* version: any;//当前版本号
* upGradeVersion: any;//后台获取的版本号
* upGradeUrl: any;//后台获取的下载链接
*/
upGrade() {
//请求等待
var loading = super.showLoading(
this.loadingCtrl,'正在获取更新信息……');
loading.dismiss();
//请求数据
this.meService.pushUpgradeData().subscribe(
res => {
this.pulldata = res;
this.upGradeVersion = this.pulldata["version"];
this.upGradeUrl =
this.httpService.getUpgradeHost() + this.pulldata["path"];
if (this.version >= this.upGradeVersion) {
this.noUpGradeConfirm("已是最新版本!");
} else {
window.open(url, "_blank", "location=yes");//更新跳转
]
);},error => console.log(error);
});
php升级测试接口:
<?php
//首先做跨域处理!
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");
header('Content-Type:application/json');
$json='{
"action": "query",
"result": "success",
"paht": "/apk/giri-mpm-app.apk",
"version": "0.2.8",
"note": "更新: 1.自我升级; 2.提交反馈意见 。修复: 1.服务器连接异常后重新登录。"
}';//注意外面的单引号
echo $json;
?>
然后就OK了
以上只是部分代码,如果前面http请求接口配置好,可以参考,如果是小白,上面代码是用不了的,具体代码待我整理一份都再分享!