Ionic2实战-APP应用内升级模块开发

前言

APP应用内升级功能指在APP打开的情况下可以自己对自己进行升级操作,不需要用户再通过应用商店进行升级。如果让用户通过应用商店升级的话首先新版本APP上线到应用商店需要一定的审核周期,第二好多用户也没有频繁打开应用商店更新APP的习惯。如果开启了应用内升级的功能就可以以最快的速度毫无中间商的将APP最新版本推送到用户手上。

需要注意的是,APP应用内升级主要是针对Android版来说的,iOS版不涉及,因为苹果爸爸规定所有iOS的应用升级必须走APP Store,如果发现有内部升级功能,则不予上架。

设计思路

本功能整体实现思路如下:

1、当用户打开APP时检测设备类型;
2、如果设备类型为Android,则代表可以进行升级检测;
3、获取APP的当前版本号,发送到升级接口;
4、后台升级接口根据APP传回的版本号与服务器上最新的版本进行对比,如发现有版本更新,则返回给前台新版APP的下载地址;
5、APP端接收后台返回结果,如没有更新,则什么都不做。如有更新,则提示用户有新版APP,并询问是否需要更新;
6、如用户选择更新,则根据后台返回的新版APP下载地址将该文件下载到本地,同时打开该文件;
7、用户只需点击确认安装,安装完成以后重新打开APP;
8、升级完成。

部分实现源码

export class UserModule {
  constructor(
    public platform: Platform,
    public events: Events,
    public heyApp: AppService,
    public userService: UserService,
    public modalCtrl: ModalController,
    public alertCtrl: AlertController,
    public utilService: UtilService,
    public localStorageService: LocalStorageService
  ) {

    // platform ready
    this.platform.ready().then(() => {

      //启动时自动检查更新
      this.updateApp();
    });
  }

  updateApp(){

    if(this.utilService.isAndroid() || this.utilService.isIos()){

      this.utilService.getVersionNumber().then(ret => {

        let params = {
          versionNum : ret,
          systemType: 'android'
        }

        this.userService.checkUpdate(params).then(data => {

          if(data.isNeedUpdate){

            //检查当前版本是否要弹出提示
            let cancelVersion = this.localStorageService.get(AppGlobal.CANCEL_VERSION);
            if(cancelVersion == data.versionNum){
              return;
            }

            this.alertCtrl.create({
              title: '升级',
              subTitle: '发现新版本,是否立即升级?',
              buttons: [
                {
                  text: '取消',
                  handler: () => {
                    this.localStorageService.set(AppGlobal.CANCEL_VERSION, data.versionNum);
                  }
                },
                {
                  text: '确定',
                  handler: () => {
                    this.utilService.downloadApp(data.versionAddr);
                  }
                }
              ]
            }).present();
          }
        });
      });
    }

  }

}


模块完整代码

该模块的完整代码在我的GitHub上,如感兴趣可以下载查看:
https://github.com/aapple/sm-coal-app

总结

只要把逻辑理清楚本模块业务上基本上没有难点,技术上需要重点关注的就是借助Cordova插件进行Android本地文件的下载和保存,最好对下载的文件进行完整性校验,再提示用户安装。

你可能感兴趣的:(Ionic2实战-APP应用内升级模块开发)