uni-app小程序订阅消息采坑实录

608 阅读2分钟

  这几天在做uni-app开发小程序的订阅消息功能,搞了好久,前前后后浪费了很长时间,可能是自己文档没看懂也有可能是没看仔细。

  文档上和社区是说要真机调试才可以,模拟器是不行的,但是我在模拟器上时好时坏的能触发弹框。失败的时候会提示requestSubscribeMessage:fail can only be invoked by user TAP gesture。这是提示你应该让用户通过点击操作唤起该接口而不是你使用方法调用直接唤起(类似于button的点击才能触发获取用户授权手机号)。这样应该是防范恶意唤起接口骚扰用户(就和原来有段时间小游戏在微信群到处恶意分享一样)。当然最好的肯定是直接点击按钮触发相关接口,可是很多时候往往在唤起订阅消息之前会有相关的接口返回信息判断之类的东西,所以处理起来很头疼。

  • 文档说明

  • 个人遇到的几个点:
    1.<form>表单组件的点击方法无法触发接口。 uni-app的input好像有点问题用v-model和:value绑定获取值偶尔会漏字少字,所以我用的表单组件来获取值好像暂时是没有问题的,但是form表单组件的点击方法我无法唤起订阅消息。会提示requestSubscribeMessage:fail can only be invoked by user TAP gesture。

2.闭包内好像也是无法唤起操作。 我当时是用了节流函数去处理点击方法,但是始终提示requestSubscribeMessage:fail can only be invoked by user TAP gesture,我去掉节流方法以后就可以唤起了。

saveMind:throttle(function(data){
	uni.request({
		url:`...`,
        method:"POST",
        data:data
    }).then(()=>{ 
        this.getAuthorization() //该方法是订阅消息请求 
    }) 
})  

3.订阅消息发送后,点击跳转到小程序页面显示为空,是因为体验版和开发版是无法跳转的,只有正式版才可以。
本人水平有限,暂时只发现了这些,如果有错误的地方或者有补充的还请各位不吝赐教。