自学内容网 自学内容网

【uniapp】热更新前后台方法(简单实现)

前端使用uniapp打包的app应用

前端:

在项目app.vue中加入以下代码

methods:{
update() {
//console.log(this.risun)
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
console.log('widgetInfo', widgetInfo)
uni.request({
url: '',  //检查更新接口地址
data: {
version: widgetInfo.version,
versionCode: widgetInfo.versionCode
},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: 'POST',
success: function(result) {
console.log('result', result) 
var data = result.data;
console.log('data', data)
if (data.versionStatus == '2') {
//console.log('进入方法',data.updateUrl)
uni.downloadFile({
url: data.updateUrl,//热更新包地址
success: function(downloadResult) {
console.log('downloadResult',
downloadResult)
if (downloadResult.statusCode === 200) {
console.log('statusCode200');
uni.showModal({
title: '有新版本更新',
content: '是否下载更新',
success: function(res) {

if (res.confirm) {
console.log('用户点击确定');
plus.runtime
.install(
downloadResult
.tempFilePath, {
force: true
},
function() {
uni.showToast({
title: "安装成功",
icon: 2000,
duration: 1000
})
setTimeout
(function() {
plus.runtime
.restart();
},
1100
)
},
function(
e
) { // }) 
console
.log(
e
)
uni.showToast({
title: "安装失败",
icon: 2000,
duration: 1000
})
});
} else if (res
.cancel) {
console.log(
'用户点击取消'
);
return;
}
}
})

}
},
fail: function(res) {
console.log('失败')
}
});
}
}
});
});
}
}

后端:

类:

public class AppUpdateEntity 
{
    /// <summary>
    /// 版本
    /// </summary>
    /// <returns></returns>
    public string Version { get; set; }
    /// <summary>
    /// 版本代码
    /// </summary>
    /// <returns></returns>
    public string VersionCode { get; set; }
    /// <summary>
    /// 数据创建时间
    /// </summary>
    /// <returns></returns>
    [JsonConverter(typeof(DateTimeJsonConverter))]
    public DateTime? CreateDate { get; set; }
    /// <summary>
    /// 文件地址
    /// </summary>
    /// <returns></returns>
    public string FilePath { get; set; }
}

方法:(已yisha框架为例)

[HttpPost]
public async Task<object> CheckVersion([FromForm] string version = "", [FromForm] string versionCode = "")
{
    object obj = new { message = "操作失败", versionStatus = "0", updateUrl = "" };
    TData<List<AppUpdateEntity>> tdata = await new AppUpdateBLL().GetList(null);//获取数据库中存储的更新信息集合
    List<AppUpdateEntity> list = new List<AppUpdateEntity>();
    if (tdata.Tag == 1)
    {
        list = tdata.Data;
        if (list != null && list.Count > 0)
        {
            AppUpdateEntity aPPUpdateEntity = list.OrderByDescending(a => a.CreateDate).ToList().FirstOrDefault();//获取集合中最新一条数据
            //如果传入版本号和当前最新一条版本号不匹配,则返回更新信息
            if (!version.Equals(aPPUpdateEntity.Version))
            {
                obj = new { message = "更新版本", versionStatus = "2", updateUrl = aPPUpdateEntity.FilePath };
            }
            else
            {
                obj = new { message = "无需更新", versionStatus = "1", updateUrl = "" };
            }
        }
        else
        {
            obj = new { message = "操作失败", versionStatus = "1", updateUrl = "" };
        }
    }
    else
    {
        obj = new { message = "操作失败", versionStatus = "0", updateUrl = "" };
    }
    return (obj);
}


原文地址:https://blog.csdn.net/MoFe1/article/details/142849376

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!