由于这年头AI太好用了,所以没有写代码前先翻官方文档的习惯,结果一个bug折腾了快一周都没查出来是什么错误,一直疯狂报WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {"errno":101,"errMsg":"private_getBackgroundFetchData:fail private_getBackgroundFetchData:fail:jsapi invalid request data"},我去翻遍了全网都找不到合适的解决方法,疯狂问ai然后改代码也不行,结果最后发现,蠢到家了。

进入正题:

WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {"errno":101,"errMsg":"private_getBackgroundFetchData:fail private_getBackgroundFetchData:fail:jsapi invalid request data"

当出现上述错误的时候怎么办?有时候并不是你的权限获取、隐私声明的问题,也有可能你的代码压根没写对,当我们从旧的wx.getSystemInfo(Object object)接口升级到新的wx.getDeviceInfo()接口时,要注意一个踩坑点:
wx.getSystemInfo(Object object):
从基础库 2.20.1 开始,本接口停止维护,请使用 wx.getSystemSettingwx.getAppAuthorizeSettingwx.getDeviceInfowx.getWindowInfowx.getAppBaseInfo 代替

这是 wx.getSystemInfo 的返回值,有三个回调函数(异步回调):

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

这是 wx.getDeviceInfo() 的返回值(同步调用):

Object

属性 类型 说明
abi string 应用(微信APP)二进制接口类型(仅 Android 支持)
deviceAbi string 设备二进制接口类型(仅 Android 支持)
benchmarkLevel number 设备性能等级(仅 Android 支持)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50)
注意:从基础库3.4.5开始,本返回值停止维护,请使用wx.getDeviceBenchmarkInfo获取设备性能等级
brand string 设备品牌
model string 设备型号。新机型刚推出一段时间会显示unknown,微信会尽快进行适配。
system string 操作系统及版本
platform string 客户端平台
cpuType string 设备 CPU 型号(仅 Android 支持)(Tips: GPU 型号可通过 WebGLRenderingContext.getExtension('WEBGL_debug_renderer_info') 来获取)
memorySize string 设备内存大小,单位为 MB

注意了!!! wx.getDeviceInfo() 并没有回调函数,所以你直接把 getSystemInfo 改为 getDeviceInfo 不改代码逻辑的话就会一直报错,然后也无法正确执行代码,简直怀疑人生,getDeviceInfo是同步函数,所以直接获取返回值然后加判断语句去修改代码就行了,不需要放在回调函数里!

示例代码

const deviceInfo = wx.getDeviceInfo()

console.log(deviceInfo.abi)
console.log(deviceInfo.benchmarkLevel)
console.log(deviceInfo.brand)
console.log(deviceInfo.model)
console.log(deviceInfo.platform)
console.log(deviceInfo.system)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐