Uniapp 版本升级更新迭代

769 阅读3分钟

UpdatePlugin

简介

一个好看又好用的版本更新的原生插件,支持整包、热更新、国际化、高度定制,内部版本管理、错误提示、国际化,简化版本更新流程,无需做热更新整包判断及版本比较等琐事,只需请求后台接口替换下参数即可完成版本更新

预览

image.png image.png image.png

引用

// 引用插件
const updateModule = uni.requireNativePlugin("Chen-Update")

checkUpdate(OBJECT,CACLLBACK)

检查版本更新

OBJECT参数说明

参数类型必填说明平台差异
i18nString国际化,目前仅支持中(zh)英文(en)俩种语言,默认中文(zh)
versionString版本更新的版本号(例如:1.0.0)
versionInfoString版本更新的内容
versionInfoEnString版本更新的内容(英文)
titleString版本更新的标题
titleEnString版本更新的标题(英文)
downloadUrlString版本更新的下载包地址或下载链接iOS填写苹果商店的链接地址
updateStatusInt版本更新的更新方式,1:正常更新(默认);2:强制更新;3:静默更新(需要root权限)iOS不支持静默更新
isIgnorableBoolean是否可忽略此版本,忽略后该版本不会再提示更新(强制更新时无效)仅Android
apkSizeint版本更新的内容大小(包大小乘1024)仅Android
apkMd5String版本更新的文件MD5效验值,保证文件唯一性,避免重复下载(在线MD5取下值或不填)仅Android
topImgBgString自定义更新弹窗顶部图片
themeColorString主题色(按钮、下载进度条颜色)
btnTextString按钮文本
btnTextEnString按钮文本(英文)
marketListArray发行的应用市场列表仅Android
customActionBoolean自定义事件,点击按钮回调自行逻辑操作(热更新或第三方发布页更新等其他场景)仅iOS
CACLLBACK参数说明
参数类型说明
successBoolean操作状态值
dataFile热更新wgt包文件(仅在wgt更新时返回)
codeInt状态码(400:参数有误,500:安装失败,200:安装成功,0:暂无更新,10000:自定义事件)
msgString返回信息
示例
let options = {
  i18n: 'zh',
  title: "发现新版本",
  titleEn: "Discover a new version",
  version: '1.0.1',
  versionInfo: '\r\n1、修复部分已知问题。\n2、优化了部分组件功能。\n3、新增更多使用演示。',
  versionInfoEn: "\r\n1、Fix some known problems.\n2、The functions of some components are optimized.\n3、Add more usage demonstrations.",
  // 该下载包是1.0.0安装完成后还是能通过更新检查
  downloadUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ed59a1a4-e5db-43ec-a32a-2095ddab07e2/57ae7847-a0ac-477f-b7f3-f54941ee4a00.wgt',
  // ios苹果商店地址
  // downloadUrl: "https://apps.apple.com/cn/app/%E5%BE%AE%E4%BF%A1/id836500024?mt=12",
  updateStatus: 1,
  // isIgnorable: true,
  topImage: '/static/bg_update_top.png',
  themeColor: '#ffa500',
  btnText: "立即更新",
  btnTextEn: "Update now",
  apkSize: 12333, // apk安装包大小,不填不显示新版本包大小
  // apkMd5: 'xxxxxx', // 此值不可乱填哟,apk真实md5值,安装时会对比确保app没有被攥改以及不重复下载,乱填会导致安装失败
​
  // 跳转应用市场(会检测手机是否有安装这些应用市场,有按优先级跳转应用市场)
  // marketList: ['com.huawei.market','com.xiaomi.market']
​
  // customAction: "true" //  自定义事件,为兼容iOS其他场景
}
updateModule.checkUpdate(options,(res) => {
  if (res.success && res.data){
    plus.runtime.install(res.data.absolutePath, {
      force: false
    }, function() {
      // 解决热更新不更新包信息问题做内部比较简化使用
      updateModule.updateComplete()
      //进行重新启动;
      plus.runtime.restart();
    }, (e) => {
      console.log(e)
    });
  } else {
    uni.showToast({
      title:res.msg,
      icon: 'none'
    })
  }
})

插件地址