微信小程序发布新版本时自动提示用户更新的方法
如图所示,小程序新版本发布后,如果用户之前已经访问过小程序,并通过打开的小程序输入(无需手动删除),则会弹出此提示,提醒用户更新新版本。单击确定自动重启更新,单击取消关闭弹出窗口并停止更新。
官方给出的示例代码:
const Update manager=wx . getupdatemanager(). updatemanager . oncheckforupdate(function(RES){//callback console . log(RES . hasupdate)})更新管理器。在更新就绪时(function(){ wx . show modal({ title : ' update prompt ',content: '新版本已就绪,是否要重新启动应用程序?成功(RES){如果(RES . confirm){//新版本已经下载,请调用applyUpdate应用新版本并重新启动updatemanager。applyupdate()} } })})updatemanager。更新失败时(function(){//新版本下载失败}),官方演示中只有最基本的更新提示。而且官方还表示这个功能的基础库开始支持1.9.90,低版本需要兼容,所以对面代码需要改进。
另一方面,如果当前版本更新有重大调整,肯定需要用户更新,可以在用户点击取消时在回调中给出提示,重新进入版本提示流程。如下图,在上面的更新提示中,用户点击取消,弹出如下提示弹出。用户点击确定更新版本,点击取消调出上面的更新提示。总之,只有更新了小程序,用户才能正常访问(如果没有必要,建议谨慎使用)。
改进的代码:
//app . jsapp({ onLounCh : function(options){ this . autoupdate()},autoupdate3360 function(){ console . log(new date())var self=this//获取applet更新机制的兼容性if(wx . cani use(' getupdatemanager '){ const updatemanager=wx。getupdatemanager ()//1。检查是否有发布updatemanager的小程序的新版本。oncheckforupdate()函数(RES){//请求回调if (res.hasUpdate)的新版本信息。{//2.如果有小程序的新版本,默默下载新版本,准备更新。更新管理器。更新就绪时(函数(){控制台。日志(新日期())wx.showmodal ({title : '更新提示',content: '新版本已准备好。“重新启动应用程序?”,成功:功能(RES) {if (Res. confirm) {//3。新版本已经下载。调用applyUpdate应用新版本并重新启动updatemanager。applyupdate()} else If(RES . cancel){//如果需要强制更新,请给出第二个弹出窗口。如果不需要,这里的代码可以删除wx.showModal({ title:' Tips ~ ',Content: '本次版本更新涉及新增功能,旧版本无法正常访问~ ',成功:功能(RES) {self。autoupdate()返回;//第二次提示后,如果(res.confirm) {//新版本已经下载,则强制更新。调用applyUpdate应用新版本并重新启动updatemanager。applyupdate()} else if(RES . cancel){//返回版本更新提示符self。autoupdate ()}}})}))更新管理器。更新失败(函数(){//新版本下载失败。wx.showModal({ title: '有新版本~ ',content: '已启动~,请删除当前小程序,再次搜索并打开~ ',})})})else)} {//如果您希望用户在最新版本的客户端上体验您的小程序,可以提示wx.showModal({ title: '提示',content: '当前微信版本太低,无法使用此功能,请升级到最新微信版本后再试一次'})}})更新版本的模拟测试:
1.微信开发者工具可以通过“编译模式”下的“下一次编译模拟更新”开关进行调试;
2.小程序开发版/体验版没有“版本”的概念,无法在开发版/体验版上测试版本的更新;
对于开发人员工具,您可以按如下方式验证测试:
单击编译模式设置下拉列表,然后单击“添加编译模式”。在自定义编译条件的弹出界面中,点击【下一次编译】中的【模拟更新】,然后点击【确定】进行重新编译。
需要注意的是,这个方法在模拟一次更新后是无效的,需要重置这个编译模式,以便以后测试。
更新提示延迟?
在开发者工具上测试验证时,小程序界面加载五六秒后弹出更新提示弹出窗口。这是因为小程序调用更新管理器。on Update Ready(函数回调),用于在检测到有新版本后监视版本更新。此时,客户端主动触发下载(无需开发人员触发),下载成功后进行回叫。也就是说,小程序检测到新版本并下载新版本后,会弹出我们上面的更新提示弹出窗口,所以有几秒钟的时间差。在这种情况下,有必要再次改进。至少在编译小程序时检测到新版本时,应该先给出更新提示。至于下载新版本的准备,可以在用户点击确认按钮后进行。代码转换如下:
app({ OnLounCh : function(options){ this . auto update()},autoupdate3360 function(){ var self=this//获取兼容性if(wx . cani use(' getupdatemanager '))){ const updatemanager=wx . getupdatemanager()//1。检查小程序是否有新版本。updatemanager。oncheckforupdate(函数(RES){//请求新版本信息后回调if(RES . has update){//检测到新版本,需要更新。给出提示wx . show modal({ title : ' update prompt ',content: '检测到新版本,要下载吗?成功:功能(RES) {if (Res. confirm) {//2。用户决定下载更新小程序。小程序下载并自动更新。下载并更新(更新管理器)} else if(RES . cancel){//当用户点击取消按钮时,如果需要强制更新,会给出第二个弹出窗口,如果不需要,那么wx.showModal({ title:' Tips ~ ',content: '此版本更新涉及新增功能,旧版本无法正常访问~ ',showCancel:false,//隐藏取消按钮confirmText: '确认更新',//只保留确认更新按钮成功33330重新申请自我。下载并更新(更新管理器)} } })} } } else {//如果希望用户在最新版本的客户端上体验您的小程序,可以提示wx . show modal({ title : ' prompt ',content: '当前微信版本太低,无法使用此功能,请升级到})},/* * *下载新版本的小程序并重新启动应用*/下载并更新:功能(更新管理器){ var self=this wx . show loading();//静默下载更新小程序的新版本,update manager . on update ready(function(){ wx . hide loading()//新版本已经下载。调用applyUpdate应用新版本并重新启动updatemanager。applyupdate ()}) updatemanager。on update失败(function(){//新版本下载wx.showModal失败({ title: '已经有新版本~ ',Content: '新版本已经启动~,请删除当前小程序并再次搜索打开~ ',})})})如上,检测到有新版本的小程序后,会弹出一个窗口提示用户下载新版本并重启小程序,用户点击OK后会下载更新新版本的小程序另外,为了方便调用,下载新版本并单独重启小程序。
这样从加载小程序到弹出版本更新弹出窗口(开发者工具测试需要2~3秒),只需要调用新的版本检测API并返回结果就可以了。虽然还有一点延迟,但也只能现在做了。
总结:
综上所述,无论如何,使用小程序版本更新检测功能都需要一定的时间(一两秒不算短)。如果用户在检测到后的一两秒内操作,更新提示弹出窗口会中断用户的操作。但是不经常更新,这方面可以接受。
另外,新版本包下载时建议加载,让用户知道是在下载,然后下载后自动重启,整个过程顺畅很多。
梳理一下,整个思维导图,可以帮助理解:
其他注意事项:
基本库的最低版本设置:
如果不想判断API支持,可以设置小程序的最低版本支持。
打开小程序管理后台-设置-基础库最低版本设置,根据已有小程序的访问情况或小程序提供的官方数据,设置一个热门的基础库版本,最大限度减少API兼容性判断,鼓励用户更新微信版本,支持小程序正常运行,体验小程序的一些高级功能。
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。
版权声明:微信小程序发布新版本时自动提示用户更新的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。