收藏
回答

强制更新无效

编辑器里强制更新会有弹窗,但是实机没有

代码直接写在进游戏里的onload里面:

//检查更新

var updateManager = wx.getUpdateManager();

updateManager.onCheckForUpdate(function (res) {

   // 请求完新版本信息的回调

    // console.log(res.hasUpdate)

})


updateManager.onUpdateReady(function () {

    wx.showModal({

        title: '更新提示',

        content: '新版本已经准备好,是否重启应用?',

        showCancel : false,

        success: function (res) {

            if (res.confirm) {

                // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启

                updateManager.applyUpdate()

            }

        }

    })

})

updateManager.onUpdateFailed(function () {

    // 新版本下载失败

})


回答关注问题邀请回答
收藏

3 个回答

  • 小游戏运营专员 - 宏
    小游戏运营专员 - 宏
    2019-12-05

    你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2019-12-05
    有用
    回复 4
    • egbert
      egbert
      2019-12-06
      你好,我强制更新实机可以了,但存在部分强制更新后丢档的问题,杀死进程 重新登录就好了,请问怎么处理。我看也有别的开发者提了这个问题,这个bug很严重,玩家体验很不好。
      2019-12-06
      回复
    • egbert
      egbert
      2019-12-06
      你好,在吗,丢档问题有好的提议吗
      2019-12-06
      回复
    • 小游戏运营专员 - 宏
      小游戏运营专员 - 宏
      2019-12-06回复egbert
      我们会尽快修复这个问题,有进展会同步哈。
      2019-12-06
      回复
    • egbert
      egbert
      2019-12-06回复小游戏运营专员 - 宏
      请问这个问题是什么引起的,有什么补救方法吗
      2019-12-06
      回复
  • egbert
    egbert
    2019-12-06

    强制更新成功了,把wx.showModal 删掉,直接强制更新就好了。实机测试 会弹出 更新提示框的。

    但玩家反馈会有丢档的情况。重新启动后就好了。

    别的开发者也反馈了这个问题https://developers.weixin.qq.com/community/develop/doc/000e6e6b938d302d0d79e7e5651000?highLine=updateManager


    updateNewVersion () {

            //检查更新

            const updateManager = wx.getUpdateManager();

            

            updateManager.onCheckForUpdate(function (res) {

                    // 请求完新版本信息的回调

                    // console.log(res.hasUpdate)

            })

            

            updateManager.onUpdateReady(function () {

                    //此处直接强制更新,不需要弹窗,实机测试会有弹窗,不用担心

                    updateManager.applyUpdate()

            })

            updateManager.onUpdateFailed(function () {

                    // 新版本下载失败

                    console.log('新版本下载失败')

            })

    },


    2019-12-06
    有用 1
    回复 1
    • 9这么6
      9这么6
      2020-05-25
      如果不加showModal 的话 那用户就没得选择了 就只能强制更新
      2020-05-25
      回复
  • LIYI
    LIYI
    2022-03-24

    这个问题有意思,试了一下,在模拟器中也可以复现,如下所示。

    微信在为小程序启动准备运行环境时,其中有一项是准备一个新的进程,LocalStorage应该是跟着进程走了,一个进程一个本地缓存。当新版本强制启动时,是杀死了当前的进程,用下载好的新版本启动了新进程,之前进程里的缓存也就取不到了。

    进程之间还不好共享缓存,且不说好不好做能不能实现;如果这样做了,安全性又受到了挑战,万一小程序A意外访问到了小程序B的缓存了怎么办。

    所以想到一个妥协的解决办法,是不是可以这样:

    • 机密信息不要写在LocalStorage中,能够写在本地缓存里的信息,一定非得要的冗余信息;
    • 本地缓存也设置一个版本信息,并且与小程序版本挂钩,当两者不一样时,也就是版本更新时,强制从服务器拉取一遍信息,然后再向本地重存一遍。这个过程就好比每次农药更新版本时,我们看到的那个进度条。



    2022-03-24
    有用
    回复
登录 后发表内容
问题标签