美文网首页
关于 fail can only be invoked by u

关于 fail can only be invoked by u

作者: 越前君 | 来源:发表于2023-02-23 10:49 被阅读0次
    配图源自 Freepik

    相信大家开发小程序的时候都遇到过:

    {errMsg: "requestSubscribeMessage:fail can only be invoked by user TAP gesture."}

    意思就是需要「用户触发」,是用户自发、主动的行为才能正常调用,很多 API 都用此限制,比如 wx.navigateToMiniprogram()wx.openSetting() 等。官方甩锅说开发者滥用接口,其实都是产品经理需求上的滥用。他们限制不了产品经理,就只能搞开发者了。

    诸如此类的问题,在微信开放社区一搜一堆,然后官方万能回复模板是:「请具体描述问题出现的流程,并提供能复现问题的简单代码片段」。

    原因可能会有这些,自行排查一下:

    1. 只能在 bindtap/catchtap 绑定的方法内调用 wx.requestSubscribeMessage()
    2. 只能在所绑定的方法内直接调用,不允许在回调函数中调用。
    3. 在执行 wx.requestSubscribeMessage() 前,不能有 await xxx 等异步操作。看到一个更离谱的是前面有 console.log() 也失败了,移步这里

    关于能不能在回调函数里使用,有些人在 wx.request()wx.showToast() 等回调里是成功的,总之很诡异~

    解决方法是,将其他逻辑后置,首先调用 wx.requestSubscribeMessage() 接口。

    相关链接:

    相关文章

      网友评论

          本文标题:关于 fail can only be invoked by u

          本文链接:https://www.haomeiwen.com/subject/wejgkdtx.html