【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)!