Open toFrankie opened 1 year ago
相信大家开发小程序的时候都遇到过:
{errMsg: "requestSubscribeMessage:fail can only be invoked by user TAP gesture."}
意思就是需要「用户触发」,是用户自发、主动的行为才能正常调用,很多 API 都用此限制,比如 wx.navigateToMiniprogram()、wx.openSetting() 等。官方甩锅说开发者滥用接口,其实都是产品经理需求上的滥用。他们限制不了产品经理,就只能搞开发者了。
wx.navigateToMiniprogram()
wx.openSetting()
诸如此类的问题,在微信开放社区一搜一堆,然后官方万能回复模板是:「请具体描述问题出现的流程,并提供能复现问题的简单代码片段」。
原因可能会有这些,自行排查一下:
只能在 bindtap/catchtap 绑定的方法内调用 wx.requestSubscribeMessage()。 只能在所绑定的方法内直接调用,不允许在回调函数中调用。 在执行 wx.requestSubscribeMessage() 前,不能有 await xxx 等异步操作。看到一个更离谱的是前面有 console.log() 也失败了,移步这里。
bindtap/catchtap
wx.requestSubscribeMessage()
await xxx
console.log()
关于能不能在回调函数里使用,有些人在 wx.request()、wx.showToast() 等回调里是成功的,总之很诡异~
wx.request()
wx.showToast()
解决方法是,将其他逻辑后置,首先调用 wx.requestSubscribeMessage() 接口。
相关链接:
相信大家开发小程序的时候都遇到过:
意思就是需要「用户触发」,是用户自发、主动的行为才能正常调用,很多 API 都用此限制,比如
wx.navigateToMiniprogram()
、wx.openSetting()
等。官方甩锅说开发者滥用接口,其实都是产品经理需求上的滥用。他们限制不了产品经理,就只能搞开发者了。诸如此类的问题,在微信开放社区一搜一堆,然后官方万能回复模板是:「请具体描述问题出现的流程,并提供能复现问题的简单代码片段」。
原因可能会有这些,自行排查一下:
关于能不能在回调函数里使用,有些人在
wx.request()
、wx.showToast()
等回调里是成功的,总之很诡异~解决方法是,将其他逻辑后置,首先调用
wx.requestSubscribeMessage()
接口。相关链接: