查了社区问题,好像对这两种方法使用,很少人提,或者答案不全,或者没有我想要的结果;然后自己给自己加需求使用了这个东西,得到了一下认识,我就把知道的都说下吧:
先上代码:
// 设置周期性或者数据拉取参数
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