uniapp打包APP实现应用内整包更新或热更新

这篇具有很好参考价值的文章主要介绍了uniapp打包APP实现应用内整包更新或热更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

思路:

1.首先要理解更新方式的区别 静默更新、弱更新以及强制更新。

APP更新机制-静默更新、弱更新、强更新 - 知乎

2.其次要理解不同更新方式要用到的插件----------这里推荐插件应用市场的插件。

app升级、整包更新和热更新组件 支持vue3 支持打开安卓、苹果应用市场,wgt静默更新 - DCloud 插件市场

3.一般来说每个APP自行发布后台管理系统一般要有放置APP信息的菜单。

uniapp打包APP实现应用内整包更新或热更新,vue,uniapp,uni-app

4. 最后要和后端进行沟通返回的APP信息,前端在APP.vue文件进行根据个人需求进行操作。

注意:

1.仔细阅读插件市场的文档,非常可靠。

2.如果是wgt热更新那么下载地址必须以wgt结尾,否则会提示错误。如果是整包更新安卓必须是apk结尾的网址,否则会跳到浏览器下载。

3.特别强调后端返回的格式以及字段必须和组件内一致。

操作流程

1.首先进入插件市场,导入此插件到项目中。(导入插件时会有提示是否注册page,选择是,但不能是第一项

uniapp打包APP实现应用内整包更新或热更新,vue,uniapp,uni-app

 2.其次在App.vue文件进行初始化信息配置。

uniapp打包APP实现应用内整包更新或热更新,vue,uniapp,uni-app

 3.这里我用的是模拟接口数据来测试的。---后期需要换成后端返回的数据

updateAPPTest() {
				//#ifdef APP-PLUS
				// 获取本地应用资源版本号
				plus.runtime.getProperty(plus.runtime.appid, (inf) => {
					//获取服务器的版本号
					const data = {
						// 版本更新内容 支持<br>自动换行
						describe: '1. 修复已知问题 <br/> 2. 优化用户体验1 ',
						edition_url: 'http://192.1.1.48:80/sc.apk', //apk、wgt包下载地址或者应用市场地址  安卓应用市场 market://details?id=xxxx 苹果store itms-apps://itunes.apple.com/cn/app/xxxxxx
						edition_force: 0, //是否强制更新 0代表否 1代表是
						package_type: 0, //0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级
						edition_issue: 1, //是否发行  0否 1是 为了控制上架应用市场审核时不能弹出热更新框
						edition_number: 101, //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
						edition_name: '1.0.1', // 版本名称 manifest里的版本名称
						edition_silence: 0, // 是否静默更新 0代表否 1代表是
					}
					//res.data.xxx根据后台返回的数据决定(我这里后端返回的是data),所以是res.data.data 
					//判断后台返回版本号是否大于当前应用版本号 && 是否发行 (上架应用市场时一定不能弹出更新提示)
					if (Number(data.edition_number) > Number(inf.versionCode) && data.edition_issue == 1) {
						console.log('找到新版本')
						//如果是wgt升级,并且是静默更新 (注意!!! 如果是手动检查新版本,就不用判断静默更新,请直接跳转更新页,不然点击检查新版本后会没反应)
						if (data.package_type == 1 && data.edition_silence ==
							1) {
							//调用静默更新方法 传入下载地址
							silenceUpdate(data.edition_url)
						} else {
							//跳转更新页面 (注意!!!如果pages.json第一页的代码里有一打开就跳转其他页面的操作,下面这行代码最好写在setTimeout里面设置延时3到5秒再执行)
							uni.navigateTo({
								url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update?obj=' +
									JSON.stringify(data)
							});
						}
					} else {
						console.log('已经是最新版本了')
						
						// 如果是手动检查新版本 需开启以下注释
						uni.showModal({
							title: '提示',
							content: '已是最新版本',
							showCancel: false
						})
					}

				});

				//#endif    
			},

注意后端返回的字段结果信息:

data:{
    // 版本更新内容 支持<br>自动换行
    describe: '1. 修复已知问题<br>
                2. 优化用户体验', 
    edition_url: '', //apk、wgt包下载地址或者应用市场地址  安卓应用市场 market://details?id=xxxx 苹果store itms-apps://itunes.apple.com/cn/app/xxxxxx
    edition_force: 0, //是否强制更新 0代表否 1代表是
    package_type: 1, //0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级
    edition_issue:1, //是否发行  0否 1是 为了控制上架应用市场审核时不能弹出热更新框
    edition_number:100, //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
    edition_name:'1.0.0',// 版本名称 manifest里的版本名称
    edition_silence:0, // 是否静默更新 0代表否 1代表是
}

4.看下实现效果(这里演示的是应用内安卓整包更新)

uniapp打包APP实现应用内整包更新或热更新,vue,uniapp,uni-appuniapp打包APP实现应用内整包更新或热更新,vue,uniapp,uni-app

注意:

大坑

    uniapp打包APP实现应用内整包更新或热更新,vue,uniapp,uni-app文章来源地址https://www.toymoban.com/news/detail-559496.html

所以要使用plus.runtimegetProperty来获取版本号

到了这里,关于uniapp打包APP实现应用内整包更新或热更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包