前端使用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);
}