微信小程序体验版、线上版共用storage问题的解决方案。


问题根源

小程序体验版和线上版本storage 共享问题

小程序体验版和线上版本共用一套storage,会出现在测试中,体验版的数据调用线上版的bug。

由于官方不做处理,所以自行写一个解决方法,代码比较简单。

解决

代码执行流程如下

  1. 当页面加载的时候,在 storage 中写入当前的环境(体验版、线上版)。
  2. 切换体验版 、线上版的时候,校验是否与 storage 一致。
  3. 如果不一致,则清除 storage 与 弹出对应的提示。
// app.js

const SYSTEM_INFO = wx.getAccountInfoSync()
const ENV_VERSION = SYSTEM_INFO.miniProgram.envVersion

App({
    onLaunch() {
        // 设置当前系统的环境
        wx.getStorageSync('envVersion') || wx.setStorageSync('envVersion', ENV_VERSION)
    },
    onShow() {
        // 检查当前环境是否冲突
        if (ENV_VERSION && (wx.getStorageSync('envVersion') !== ENV_VERSION)) {
            // 清除storage
            wx.clearStorageSync()
            wx.setStorageSync('envVersion', ENV_VERSION)
            wx.showModal({ title: '提示', content: '您从体验版 / 线上版切换过来,请重启小程序继续访问。', showCancel: false })
            return
        }
    }
})

注意事项

wx.getAccountInfoSync().miniProgram.envVersion 这个 api 是在 2.10.0 以上才会有。

评论
还没有评论
    发表评论 说点什么