7021f2fd创建于 2025年5月14日历史提交
//APP更新
export default function appUpdate() {
	
 console.log('plus.runtime.appid', plus.runtime.appid)
 console.log('plus.runtime.version', plus.runtime.version)
 console.log('plus.device.imei', plus.device.imei)
 
  uni.request({
    url: 'http://app.myhjdc.cn/update.json', //检查更新的服务器地址
    data: {
      appid: plus.runtime.appid,
      version: plus.runtime.version,
      imei: plus.device.imei,
    },
    success: (res: any) => {
      plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {
	    console.log('客户端版本信息 wgtinfo', wgtinfo)
	    console.log('服务端版本信息 res', res)
        // 客户端版本
        let client_version = wgtinfo.version

		//------------------------前两位大版本有改动-----------------------------------------------
        // 大版本是否一致 版本号1.1.0,前两位如果有改动,就是大版本更新;否则就是小版本热更新
        const flag_update =
          client_version.split('.').splice(0, 2).join('.') !=
          res.data.version.split('.').splice(0, 2).join('.')
		//------------------------前两位大版本有改动-----------------------------------------------

	    //------------------------第三位小版本有改动-热更新-----------------------------------------------
        // 客户端版本号
        let client_version_number = Number(client_version.split('.')[2])
        // 服务器版本号
        let current_version_number = Number(res.data.version.split('.')[2])
	   // 如果客户端版本号小于服务器版本号,则提醒用户更新
	    const flag_hot = !flag_update && client_version_number < current_version_number
		//------------------------第三位小版本有改动-热更新-----------------------------------------------


        console.log('客户端版本 client_version', client_version)
        console.log('客户端版本号 client_version_number', client_version_number)
        console.log('服务器版本号 current_version_number', current_version_number)
        console.log('升级更新 flag_update', flag_update)
        console.log('热更新 flag_hot', flag_hot)

        if (flag_update) {
		  console.log('*****开始大版本更新*****')
          // 提醒用户更新
          uni.showModal({
            title: '更新提示',
            content: res.data.note,
            success: (showResult) => {
              if (showResult.confirm) {
                plus.nativeUI.toast('正在准备环境,请稍后!')
                console.log(res.data.url)
                const downloadTask = plus.downloader.createDownload(
                  res.data.url,
                  {
                    method: 'GET',
                    filename: '_doc/update/',
                  },
                  function (d, status) {
                    if (status == 200) {
					  const path = d.filename; //下载apk
                      plus.runtime.install(path) // 自动安装apk文件
                    } else {
                      plus.nativeUI.alert('版本更新失败:' + status)
                    }
                  },
                )
			    downloadTask.start()
              }
            },
          })
        } else if (flag_hot) {
		  console.log('*****开始小版本热更新*****')
          uni.downloadFile({
            url: res.data.wgtUrl,
            success: (downloadResult) => {
              console.log("热更新downloadResult",downloadResult.tempFilePath)
              if (downloadResult.statusCode === 200) {
                plus.nativeUI.toast(`正在热更新!${res.data.versionCode}`)
                plus.runtime.install(
                  downloadResult.tempFilePath,
                  {
                    force: false,
                  },
                  function () {
                    plus.nativeUI.toast('热更新成功')
                    plus.runtime.restart()
                  },
                  function (e) {
                    console.log(e)
                    plus.nativeUI.toast(`热更新失败:${e.message}`)
                  },
                )
              }
            },
          })
        }
      })
    },
  })
}