周期性拉取和数据预拉取两种方法使用 wx.setBackgroundFetchToken()
发布于 4 年前 作者 li21 5933 次浏览 来自 分享

查了社区问题,好像对这两种方法使用,很少人提,或者答案不全,或者没有我想要的结果;然后自己给自己加需求使用了这个东西,得到了一下认识,我就把知道的都说下吧:

先上代码:

// 设置周期性或者数据拉取参数
if (wx.canIUse("setBackgroundFetchToken")) { // 判断是否支持该api-2.8.0以上可支持,最好使用基础库判断,我这里简单判断
  wx.setBackgroundFetchToken({
    token: data.id,
   })
  }

获取数据:

// 无论是周期性更新还是数据预拉取都是这个方法,只是参数不同
wx.getBackgroundFetchData({
      fetchType: 'pre', // fetchTylpe参数为:pre-数据预拉取,periodic-周期性更新
      success(res) {
        console.log(res.fetchedData) // 缓存数据
        console.log(res.timeStamp) // 客户端拿到缓存数据的时间戳
        console.log(res.path) // 页面路径
        console.log(res.query) // query 参数
        console.log(res.scene) // 场景值
      }
    })

上连个拉取数据成功的截图:

周期性更新,获取到的数据:

数据预拉取,获取到的数据:

由结果可以感受到返回结构都是一样的,微信发起数据回调都是在属性fetchedData属性里面,需要进行JSON.parse();

这里需要注意下:

1、进入小程序后台配置好能请求的GET请求接口,这里是GET请求哦要注意啦。

2、如果工具提示错误代码:6000101,这个很大可能是因为你配置的接口只支持post或者需要登录认证才能调的接口,报的错误;

3、wx.setBackgroundFetchToken({token: ‘xxx’}),这里的token属性key无法修改,当微信调你配置的接口,会在配置的地址后面拼接上toke既(https://baidu.com?token=“xxx”);

4、周期性数据,你设置了token也不会马上拉取数据的,测试需要借助开发工具点击数据拉取;数据预拉取,设置token下次刷新就有数据了;

5、周期性更新没12小时更新一次,然后缓存数据,但是不能超过256KB; 数据预拉取:token和code只会存在一个,用于标识用户身份。大小应不超过 256KB

回到顶部