ionic学习(十二):推送app的版本更新

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011321546/article/details/82526829

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请求接口配置好,可以参考,如果是小白,上面代码是用不了的,具体代码待我整理一份都再分享!

展开阅读全文

没有更多推荐了,返回首页