⼩程序版本⾃动更新的⽅法
公司的⼩程序项⽬上线, 后期还会有⼩型的版本迭代. 为了让⽤户能在我们进⾏版本迭代后及时使⽤最新版本的功能. 做了以下优化..
知识点1: 当⽤户点击左上⾓关闭,或者按了设备Home 键离开,⼩程序并没有直接销毁,⽽是进⼊了后台;
当再次进⼊或再次打开⼩程序,⼜会从后台进⼊前台,只有当⼩程序进⼊后台⼀定时间,或者系统资源占⽤过⾼,才会被真正的销毁。
知识点2: ⼩程序的启动分为"冷启动" 和 "热启动".
热启动是指: ⼩程序打开后,在⼀段时间内(⽬前:5分钟)再次被打开,此时会将后台的⼩程序切换到前台。
冷启动是指: ⼩程序⾸次打开或销毁后再次被打开
知识点3: 更新版本
冷启动时, 如果发现有新版本,将会异步下载新版本的代码包,并同时⽤客户端本地的包进⾏启动,即新版本的⼩程序需要等下⼀次冷启动才会应⽤上。
如果要马上应⽤最新版本,使⽤API 进⾏处理。
代码如下:
// 在app.js⾥写下以下代码
onLaunch () {
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
console.log('onCheckForUpdate====', res)
// 请求完新版本信息的回调
if (res.hasUpdate) {
console.log('res.hasUpdate====')
wx.showModal({
title: '更新提⽰',
content: '新版本已经准备好,是否重启应⽤?',
success: function (res) {
console.log('success====', res)
// res: {errMsg: "showModal: ok", cancel: false, confirm: true}
if (firm) {
// 新的版本已经下载好,调⽤ applyUpdate 应⽤新版本并重启
updateManager.applyUpdate()
}
}
})
})
// 新的版本下载失败
wx.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前⼩程序,重新搜索打开哟~'
})
})
}
})
}
}
知识点4: ⼩程序重新初始化时会触发onLaunch事件.  onLaunch事件会触发在页⾯onShow事件之前.获取⼩程序更新版本可以写在onLaunch⾥.
知识点5:
在开发和体验版⽆法测试版本更新
需要在开发者⼯具⾥,编译时选择"模拟更新编译"
(部分开发者⼯具版本, 每次update编译时都需要重新勾选此选项)
点击确定,重新编译.页⾯会弹窗显⽰:
点击确认后: 
控制台显⽰:
知识点6: 随着⼩程序的不断更新, 部分功能可能需要最新版的客户端才能使⽤. 这时候可以弹窗提⽰⽤户更新到最新版本
if (wx.canIUse('getUpdateManager')) {
...
} else {
// can't use getUpdateManager
wx.showModal({
title: '提⽰',
写文章的小程序content: '当前版本过低,⽆法使⽤该功能,请升级到最新版本后重试。'
})
完整版本:
onLaunch () {
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
if (res.hasUpdate) {
wx.showModal({
title: '更新提⽰',
content: '新版本已经准备好,是否重启应⽤?',
success: function (res) {
if (firm) {
updateManager.applyUpdate()
}
}
})
})
wx.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前⼩程序,重新搜索打开哟~'
})
})
}
})
} else {
wx.showModal({
title: '提⽰',
content: '当前版本过低,⽆法使⽤该功能,请升级到最新版本后重试。'
})
}
}
知识点7: 如果在onLaunch⾥进⾏请求, 这是异步请求. 如果对交互顺序有要求, 如: 版本更新--重新获取数据-- ⽤户展⽰, 那么需要考虑在callback⾥进⾏重获数据.
知识点8:⼩程序启动时,正常是会热更新,下载新版本的包,下⼀次启动就会使⽤新包。但发现有更新不成功的情况发⽣.
官⽅回答: 策略⽣效跟⽹络环境以及发布时间等若⼲因素有关,会尽可能让⼩程序快地更新,但⽆法保证每次都热更新成功。
知识点9:⼩程序的异步更新发⽣在冷启动过程. 官⽅不建议热更新. 原因:
参考资料:
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。