[uni-app] wgt热更新方案处理记录

文章目录

资源

HTML5-下载/安装wgt

方案

流程介绍:
1.APP启动 - 调用wgt包检测, 判断是否需要进行热更
1.1 需要更新: 执行下载->安装->更新wgt包版本号->提示并重启
1.2 不需要更新: 无操作
(以上均是静默操作, 不影响APP启动流程)

方案说明:
1.OSS存放wgt包
2.Dcloud账号的云数据库存放wgt/version等配置数据
3.uniApp本地检测wgt包版本号进行比对, 判断后决定是否下载/安装/跳过/更新wgt包本地版本号等

数据库简单结构

{
   
    "version": "1.0.8",// uniApp版本号
    "config": {
   
        "ios": {
   
            "app_wx_login": true
        },
        "android": {
   
            "app_wx_login": true
        },
        "mini": {
   
            "app_wx_login": false
        },
        "wgt": {
   
            "tag": 1, //wgt包版本号
            "config": {
   }
        }
    }
}

可以看到, 我们在云数据库中配置好 wgt字段的 tag, APP 通过查数据库中各自对应的app(如1.0.8)版本,来读取wgt对应的tag版本号, 在进行wgt下的 : 远端tag 与 本地tag 比对( 这里tag的版本号直接使用自然序号即可, 足够用)
通过tag的比对, 进行逻辑处理即可,

注意点

1.安装包提示 WGT安装包中manifest.json文件的version版本不匹配问题
由于wgt包版本号的维护不依赖于uniapp 版本号, 所以 可以在安装wgt包的时候, 强制忽略版本判断
在这里插入图片描述
2.OSS存放wgt包
通过oss存放wgt包

xxxxx/wgt/1/index.wgt
可以看到, 通过读取远端的wgt的tag, 用该tag进行oss地址的拼接, 用于作为下载地址

代码

1.数据库的查询与结果返回, 此处我用vuex来处理. (顺便进行数据库对app的数据缓存)

/**
	 * 检测wgt包
	 * appInfo: appInfo,
	 * wgtLocalTag : 本地wgt包的tag, 如果首次安装或未进行过热更新, tag为null
	 * 调用:APP初始化时, 调用进行检测
	 * 
	 */
	checkWgt({
     commit }, appInfo) {
   
		let WGT_TAG_FLAG = "wgtTagFlag";
		let wgtV = uni.getStorageSync(WGT_TAG_FLAG);
		return new Promise((reslove) => {
   
			let db = uniCloud.database();
			db.collection("xxxxxconfig")
				.where(`version == "${
     appInfo.appVersion
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值