快速知悉
- 小程序用户头像昵称获取规则调整
- 选择地理位置接口调整公告
- 监听小程序异步组件加载失败回调 wx.onLazyLoadError
- 接口调用频率规范
1. 小程序用户头像昵称获取规则调整
点击查看 小程序用户头像昵称获取规则调整 公告
自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整:
- 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。
- 自生效期起,插件通过 wx.getUserInfo 接口获取用户昵称头像将被收回:生效期后发布的插件新版本,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的插件版本不受影响,但如果要进行版本更新则需要进行适配。通过 wx.login 与 wx.getUserInfo 接口获取 openId、unionId 能力不受影响。
- 「头像昵称填写能力」支持获取用户头像昵称:如业务需获取用户头像昵称,可以使用「头像昵称填写能力」(基础库 2.21.2 版本开始支持),具体实践可见下方《最佳实践》。
- 小程序 wx.getUserProfile 与插件 wx.getUserInfo 接口兼容基础库 2.21.2 以下版本的头像昵称获取需求:上述「头像昵称填写能力」从基础库 2.21.2 版本开始支持(覆盖微信 8.0.16 以上版本)。对于来自更低版本的基础库与微信客户端的访问,小程序通过 wx.getUserProfile 接口将正 常返回用户头像昵称,插件通过 wx.getUserInfo 接口将返回用户头像昵称,开发者可继续使用以上能力做向下兼容。
对于上述 ,wx.getUserProfile 接口、wx.getUserInfo 接口、头像昵称填写能力的基础库版本支持能力详细对比见下表:
*针对低版本基础库,兼容处理可参考 兼容文档
请已使用 wx.getUserProfile 接口的小程序开发者和已使用 wx.getUserInfo 接口的插件开发者尽快适配。小游戏不受本次调整影响。
最佳实践
小程序可在个人中心或设置等页面使用头像昵称填写能力让用户完善个人资料:
2.选择地理位置接口调整公告
点击查看 选择地理位置接口调整 公告
为确保选择地理位置接口的合理使用,自 2022 年 6 月 13 日起,wx.choosePoi 和 wx.chooseLocation 接口规则进行以下调整:
- wx.choosePoi 和 wx.chooseLocation 接口的使用将不再需要用户授权 scope.userLocation,满足使用条件的开发者可直接调用,详情可访问 授权;
- 若开发者调用 wx.choosePoi 和 wx.chooseLocation 接口,需在小程序用户隐私保护指引中,声明收集用户选择的位置信息的目的,详情可访问 用户隐私保护指引填写说明;
- wx.choosePoi 接口的回调信息中,latitude 和 longitude 字段将不返回真实的经纬度信息,全部返回 ( 0 , 0 ),详情可访问 接口文档。
以上调整将对所有小程序、小游戏和插件生效。
3.监听小程序异步组件加载失败回调 wx.onLazyLoadError
在小程序中,不同的分包对应不同的下载单元;因此,除了非独立分包可以依赖主包外,分包之间不能互相使用自定义组件或进行 require。
「分包异步化」特性将允许通过一些配置和新的接口,使部分跨分包的内容可以等待下载后异步使用,从而一定程度上解决这个限制。
点击查看 分包异步化 完整官方文章。
在基础库 2.24.3 之后,可以使用 wx.onLazyLoadError 监听加载事件。
注意事项:
- 加载异步组件通常需要下载分包,若分包下载超时,则会触发 errMsg 为 "loadSubpackage: timeout" 的回调,默认超时等待时间为 5 秒。
- 可以通过第二个参数指定超时时间(单位:ms),该设置全局有效,多次指定超时时间则覆盖前面。
- 分包确认下载失败时,会再次触发 errMsg 为 "loadSubpackage: fail" 的回调。
- 若在页面中使用该接口进行监听,请确保在必要时手动调用 offLazyLoadError 取消监听,以避免非预期的内存泄漏。
点击查看 分包异步化 官方文档
4.接口调用频率规范
小程序 wx 接口可分为“普通接口”和“限频接口”。
开发者可登录小程序管理后台 - 开发管理 - 接口设置中查看“限频接口”调用情况。
目前,“限频接口”包括以下接口:
4.1 频率规范
Tips: 微信后台会延迟一天统计上一天的小程序 pv 总数和 api 调用总数,超过规范总数的会提醒尽快调整。
4.2 优化方法
开发者可以参考以下方法对“限频接口”的调用频率做优化:
- 把上一次调用接口的返回结果缓存下来以供后续逻辑复用,而不是重新调用接口
- 避免在定时循环的逻辑内重复调用“限频接口”
- 避免在页面初始化事件onLoad、onShow、onReady中调用限频接口,应该在小程序初始化事件onLaunch中调用
以下是错误用法和正确用法示例:
- wx.getSetting 错误用法:
setInterval(() => {
wx.getSetting()
}, 5000)
- wx.getSetting 正确用法:
let setting
wx.getSetting({
success(res) {
setting = res
}
})
// 在需要获取地理位置时
if (setting.authSetting['scope.userLocation']) {
wx.getLocation({
success(res) {},
fail(res) {
if (res.errMsg.indexOf('auth deny') >= 0) {
// 如果权限没有开,引导用户打开设置页开启地理位置授权
}
}
})
}
- wx.getUserInfo 错误用法:
Page({ onShow() { wx.getUserInfo() } })
- wx.getUserInfo 正确用法:
App({ onLaunch() { wx.getUserInfo() } })
点击查看 接口调用频率规范 官方文档。
学到了,赞一个