
点滴 admin 2个月前 (10-12) 923次浏览 已收录 0个评论
在做微信小程序的时候,深知版本更新的重要,对于微信小游戏自然也相当的重要。
那么怎么在微信小游戏里面实现强制更新版本呢?
小程序更新机制
未启动时更新
开发者在管理后台发布新版本的小程序之后,如果某个用户本地有小程序的历史版本,此时打开的可能还是旧版本。微信客户端会有若干个时机去检查本地缓哪丛存的小程序有没有更新版本,如果有则会静默更新到新版本。总的来说,开发者在后台发布新版本之后,无法立刻影响到所有现网用户,但最差情况下,也在发布之后 24 小时之内下发新版本信息到用户。用户下次打开时会先更新最新版本再打开。
启动时更新
小程序每次冷启动时,都会检查是否有更新版本,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。
如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。
const updateManager = wx.getUpdateManager()
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
console.log(res.hasUpdate)
})
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,袭缓基是否重启应用?',
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应拍谨用新版本并重启
updateManager.applyUpdate()
}
}
})
})
updateManager.onUpdateFailed(function () {
// 新版本下载失败
})
微信小游戏是有离线缓存的机制,也就是说如果这台手机之前玩过某个游戏,再打开游戏的时候是先加载启动手机本地缓存住的代码包,这个代码包是旧的,之后才会在后台向微信服务器下载最新的代码包。
微信小游戏上线后,新开发了一个功能或修复了一个重大Bug,想让用户打开游戏的时候就下载运行最新的代码包,而不是运行旧的代码包。
有没有解决办法呢?当然是有的!微信小游戏提供了一个 api wx.getUpdateManager() 来解决这个问题
核心方法:
UpdateManager.onCheckForUpdate(function callback)
监听该事件后微信向后台检查更新结果完会回调callback方法,如果有更新的版本,回调参数里hasUpdate属性为true。
微信在小程序冷启动时自动检查更新,不需由开发者主动触发。
UpdateManager.onUpdateReady(function callback)
监听该事件后微信下载完新版的代码包时会回调callback方法。客户端主动触发下载(无需开发者触发),下载成功后回调
UpdateManager.applyUpdate()
在onUpdateReady下载完新代码包后调用该方法强制小程序重启并使用新版本。
特别注意:
微信小游戏基础库 需要1.9.90以上版本才支持。针对老版本客户端需要做好兼容。
该更新机制只是在游戏冷启动的时候会触发,热启动的时候是不会进行更新判断的。
微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试。
字节小游戏、QQ小游戏、百度小游戏的更新机制和微信小游戏是一样的。
微信小程序窗口化的方法如下:
手机打开【微信】软件,在发现页面,点击【小程序】。在小程序页面,点击一个小程序,比如:小度扫描。在小程序页面,点击右上角的三个点。页面下方出现窗口,点击【浮窗】。完成后,小程序已经开启浮窗了。到时点击它,就可以直接进入小程序了。
微信小程序简介:
微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
全面开放申请后销蚂枝,主体物碧类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。微信小程序、微信订阅号、微信服务号、微信企业号是并行的体系。
微信小程序是一种不用下载就能使用的应用,也是一项创新,经过亏敏将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。
微信小程序也是这么多年来中国IT行业里一个真正能够影响到普通程序员的创新成果,已经有超过150万的开发者加入到了微信小程序的开发,与我们一起共同发力推动微信小程序的发展,微信小程序应用数量超过了一百万,覆盖200多个细分的行业,日活用户达到两个亿。
你好,基础库 /低版本兼容兼容
小程序的功能不断的增加,但是旧版本的微信客户端并不支持新功能,所以在使用这些新能力的时候需要做兼容。
开发者可以通过以下方式进行低版本的兼容:
1. 版本号比较
微信客户端和小程序基础库的版本号风格为 Major.Minor.Patch(主版本号 . 次版本号 . 修订版本号)。
文档中会在组件,API等页面描述中带上各个功能所要求的最低基础库版本号。
开发者可以在小程序中通过调用 wx.getAppBaseInfo 获取到当前小程序运行的基础库的版本号。通过版本号比较的方式进行运行低版本兼容逻辑。
版本号比较适用于所有情况。部分场景下也可以使用后面提到的方法完成。
<=2.20.1 的基础库请差哗手使用 wx.getSystemInfo]((wx.getSystemInfo)) 或者 wx.getSystemInfoSync 获取基础库版本
注意:不可以直接使用字符串比较的方法进行版本号比较。虚嫌例如 '芦戚2.29.1' >'2.3.0' 是 false 的
版本号比较可以参考以下代码:
function compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length <len) {
v1.push('0')
}
while (v2.length <len) {
v2.push('0')
}
for (let i = 0i <leni++) {
const num1 = parseInt(v1[i])
const num2 = parseInt(v2[i])
if (num1 >num2) {
return 1
} else if (num1 <num2) {
return -1
}
}
return 0
}
compareVersion('1.11.0', '1.9.9') // 1
const version = wx.getAppBaseInfo().SDKVersion
if (compareVersion(version, '1.1.0') >= 0) {
wx.openBluetoothAdapter()
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
2. API 存在判断
对于新增的 API,可以通过判断该 API 是否存在来判断是否支持用户使用的基础库版本。例如:
if (wx.openBluetoothAdapter) {
wx.openBluetoothAdapter()
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
3. wx.canIUse
除了直接通过版本号判断,也可以通过 wx.canIUse 来判断是否可以在该基础库版本下直接使用。例如:
API 参数或返回值
对于 API 的参数或者返回值有新增的参数,可以判断用以下代码判断。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)