小程序
小游戏
企业微信
微信支付
扫描小程序码分享
每次线上版本更新,审核过后发布到线上版本,用户打开之后还是以前的旧版本,非得把小程序删掉,在添加才会是新版本。。求教怎么才能做到版本更替,不让用户自己删除再添加啊,有没有什么方式立即生效,
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
关于更新的问题请阅读文档运行机制:https://developers.weixin.qq.com/miniprogram/dev/framework/operating-mechanism.html
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
在app.js的 onLaunch里面加入如下代码:
// 获取手机设备信息
wx.getSystemInfo({
success: (res) => {
wx.setStorageSync('systemInfo', res)
}
})
// 获取小程序更新机制兼容
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
if (res.hasUpdate) {
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
updateManager.onUpdateFailed(function () {
// 新的版本下载失败
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
我们这边是清理掉后台启动的小程序,或者直接清理掉微信的进程,再打开
刚刚看了一个强制更新的方法不知道有没有用
那个是有用的,我从来都是直接强制用户更新
// 检查小程序更新并应用
const appUpdate = (forceUpdate = true, reset = false) => { // 参数:是否强制更新,是否重置小程序
const updateManager = wx.getUpdateManager();
let version;
updateManager.onCheckForUpdate(res1 => {
// 找到更新
if (res1.hasUpdate) {
// 提示用户获取到更新
wx.showToast({ title: "检测到更新,下载中...", icon: "none" });
console.warn("APP has a Update Version");// 调试
// 请求配置文件
wx.request({
url: "https://你的网站上的一个配置文件(里面包含了forceUpdate, reset, version的信息).json",
success: res2 => {
console.log(res2); // 调试
// 获取成功,覆盖默认参数
if (res2.statusCode == 200) ({ forceUpdate, reset, version } = res2.data);
});
updateManager.onUpdateReady(() => {
// 更新下载就绪,提示用户重新启动
if (forceUpdate) wx.showModal({
title: "已找到新版本",
content: `版本${version}已下载,请重启应用更新。${(reset ? "该版本会初始化小程序。" : "")}`,
showCancel: !reset, confirmText: "应用", cancelText: "取消",
success: res => {
// 用户确认,应用更新
if (res.confirm) updateManager.applyUpdate();
updateManager.onUpdateFailed(() => {
// 更新下载失败,提示用户网络出现问题
wx.showToast({ title: "小程序更新下载失败,请检查您的网络!", icon: "none" });
console.warn("Update failure"), wx.reportMonitor("23", 1), logger.warn("Upate App error", "Net Error");// 调试
};
送你个函数
有没有实例方法啊,官方文档有点简单,许多处理不知道怎么搞,比如方法放在哪里调用,强制重启需要时间是大概多久,是不是重新下载新版本程序。旧版本有没有删除。还有版本号怎么个规范才能调用那个方法知道有新版本
更新不是有分冷更新和热更新么?
其实所谓的热更新是不存在的,因为微信不支持eval,你要自己写一个解释器的话大小在100K-300K之间,取决于你要支持多少es特性.....而且还要在界面onLoad中调用相关逻辑覆盖对应函数,非常麻烦,我的一个成熟案例拿出了500K给这东西。微信小程序所谓的热更新也是启动小程序的时候检查一下更新,等下载好了就立即重启,冷更新是新版本小程序发布以后微信客户端自己检查小程序(最近使用和我的小程序)是否有更新,自动下载最新版本并替换。
和淘宝、微信自身、QQ这种APP的热更新可差远了
牛X的大神眼中微信小程序现在提供的大小限制是15M以上,人家能把存储都给利用起来放函数资源逻辑等,完整的页面预加载逻辑还能让你用起来很丝滑
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
关于更新的问题请阅读文档运行机制:https://developers.weixin.qq.com/miniprogram/dev/framework/operating-mechanism.html
在app.js的 onLaunch里面加入如下代码:
// 获取手机设备信息
wx.getSystemInfo({
success: (res) => {
wx.setStorageSync('systemInfo', res)
}
})
// 获取小程序更新机制兼容
if (wx.canIUse('getUpdateManager')) {
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
if (res.hasUpdate) {
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新的版本下载失败
wx.showModal({
title: '已经有新版本了哟~',
content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
})
})
}
})
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
我们这边是清理掉后台启动的小程序,或者直接清理掉微信的进程,再打开
刚刚看了一个强制更新的方法不知道有没有用
那个是有用的,我从来都是直接强制用户更新
// 检查小程序更新并应用
const appUpdate = (forceUpdate = true, reset = false) => { // 参数:是否强制更新,是否重置小程序
const updateManager = wx.getUpdateManager();
let version;
updateManager.onCheckForUpdate(res1 => {
// 找到更新
if (res1.hasUpdate) {
// 提示用户获取到更新
wx.showToast({ title: "检测到更新,下载中...", icon: "none" });
console.warn("APP has a Update Version");// 调试
// 请求配置文件
wx.request({
url: "https://你的网站上的一个配置文件(里面包含了forceUpdate, reset, version的信息).json",
success: res2 => {
console.log(res2); // 调试
// 获取成功,覆盖默认参数
if (res2.statusCode == 200) ({ forceUpdate, reset, version } = res2.data);
}
});
}
});
updateManager.onUpdateReady(() => {
// 更新下载就绪,提示用户重新启动
if (forceUpdate) wx.showModal({
title: "已找到新版本",
content: `版本${version}已下载,请重启应用更新。${(reset ? "该版本会初始化小程序。" : "")}`,
showCancel: !reset, confirmText: "应用", cancelText: "取消",
success: res => {
// 用户确认,应用更新
if (res.confirm) updateManager.applyUpdate();
}
});
});
updateManager.onUpdateFailed(() => {
// 更新下载失败,提示用户网络出现问题
wx.showToast({ title: "小程序更新下载失败,请检查您的网络!", icon: "none" });
console.warn("Update failure"), wx.reportMonitor("23", 1), logger.warn("Upate App error", "Net Error");// 调试
});
};
送你个函数
有没有实例方法啊,官方文档有点简单,许多处理不知道怎么搞,比如方法放在哪里调用,强制重启需要时间是大概多久,是不是重新下载新版本程序。旧版本有没有删除。还有版本号怎么个规范才能调用那个方法知道有新版本
更新不是有分冷更新和热更新么?
其实所谓的热更新是不存在的,因为微信不支持eval,你要自己写一个解释器的话大小在100K-300K之间,取决于你要支持多少es特性.....而且还要在界面onLoad中调用相关逻辑覆盖对应函数,非常麻烦,我的一个成熟案例拿出了500K给这东西。微信小程序所谓的热更新也是启动小程序的时候检查一下更新,等下载好了就立即重启,冷更新是新版本小程序发布以后微信客户端自己检查小程序(最近使用和我的小程序)是否有更新,自动下载最新版本并替换。
和淘宝、微信自身、QQ这种APP的热更新可差远了
牛X的大神眼中微信小程序现在提供的大小限制是15M以上,人家能把存储都给利用起来放函数资源逻辑等,完整的页面预加载逻辑还能让你用起来很丝滑