egret白鹭引擎开发微信小游戏填坑录
用白鹭引擎一套开发打包的微信小游戏,记录自己遇到的坑,与君共勉,不定期更新。。。。
1,监听跳转参数
需求背景: 发行方在不同渠道分发游戏,这边需要监听到渠道传来的参数,区分渠道流量。微信官方APIpage,app,onLaunch都是坑爹的。有个博客园的哥们儿在index.js监听,也是比较不理解,那特么是开放域好么=_=
咳咳,小姐姐开始讲课(装逼)了。
1)跳转传参方式。
如图。支持两种传参,一种是path,就是?a=1&b=2的方式,另一种直接带extraData数据
2)白鹭的游戏入口在打包后的game.js。
在game.js直接监听参数,注意,如果你要用这个标识初始化游戏或者干啥干啥的,一定要在白鹭run之前使用这段代码,不然他都run了,你后面才获取。wx.onLaunch这个API已经弃用了,所以用下面的这个
var options = wx.getLaunchOptionsSync();
console.log('coming getLaunchOptionsSync from game.js======' + JSON.stringify(options));
这个如果不传参是这样的(截图来自体验版的log),可以发现有query字段。
3)通过path的方式跳转的,直接options.query就能取到传来的参数了。比如options.query.a或者options.query.b。如果是extraData方式的,那就要测试,我估计要么也是query对象里,要么在其他字段,自己试一下。
2,微信小程序版本缓存
需求背景:我们在进行微信小程序的版本迭代之后,用户必须要先删除我们的小程序进行一次重新获取才能看到更新内容不然就是之前版本的缓存
1)首先我们了解下小程序启动机制:
冷启动----小程序首次打开或销毁后再次被打开
热启动----小程序打开后,在一段时间内(目前:5分钟)再次被打开,此时会将后台的小程序切换到前台。
2)相应的更新机制为:
小程序冷启动时,会检查小程序是否有最新版本。如果有则将异步下载最新版本,但是仍将运行当前版本等到下一次冷启动时再运行最新版本。
如果你想现在就使用最新版本则需要调用wx.getUpdateManager API进行处理
3)不废话,直接贴代码
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: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
})
})
}
})