requestSubscribeMessage:fail can only be invoked by user TAP gesture 微信小程序调起订阅消息失败

Posted 早起的年轻人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requestSubscribeMessage:fail can only be invoked by user TAP gesture 微信小程序调起订阅消息失败相关的知识,希望对你有一定的参考价值。

本文章记录日常的开发经分享


【视频教程 感兴趣的伙伴可以瞅瞅】


【微信小程序】在使用 wx.requestSubscribeMessage 请求订阅信息时出现的异常 。

使用场景如下 代码清单 1-1所示:

///代码清单 
///如常用的一个表单登录接口
new Promise(function(resolve, reject) 
    return login().then((res) => 
      ... 
      ///在这里调用了 requestSubscribeMessage 支请求订阅读
       success :(res)=>
 			console.log("订阅消息 成功 "+res);
         ,
        fail :(errMessage) => 
          console.log("订阅消息 失败  "+errMessage);
        ,
        complete:(errMsg)=>
          console.log("订阅消息 完成 "+errMsg);
          that.toHome();
        
    ).catch((err) => 
      ... 
    )
  );

在上述代码清单中是 实际开发中的一个登录接口,表单提交,在高版本微信是没有问题的,但是在低版本无法调用订阅消息,报错提示

requestSubscribeMessage:fail can only be invoked by user TAP gesture

导致无法唤起订阅消息

低版本订阅消息api必须在点击事件中触发,需将form提交改为bindtap提交,一般可做成显示一个弹框友好的提示用户,然后再让用户点击按钮去手动触发订阅,在登录网络请求完成后,弹框提示用户效果如下图所示:

   let that = this ;
   wx.showModal(
          title: '温馨提示',
          content: '为更好的促进您与买家的交流,服务号需要在您的书籍成交时向您发送消息',
          confirmText:"同意",
          cancelText:"拒绝",
          success: function (res) 
              if (res.confirm) 
                 //调用订阅消息
                  console.log('用户点击确定');
                  //调用订阅
                  that.requestSubscribe();
               else if (res.cancel) 
                  console.log('用户点击取消');
                  ///显示第二个弹说明一下
                  wx.showModal(
                    title: '温馨提示',
                    content: '拒绝后您将无法获取实时的与卖家(买家)的交易消息',
                    confirmText:"知道了",
                    showCancel:false,
                    success: function (res) 
                      ///点击知道了的后续操作 
                      ///如跳转首页面 
                    
                );
              
          
      );
///发起消息订阅
function requestSubscribe()
	wx.requestSubscribeMessage(
        tmplIds: ['... '],
        success :(res)=>
          console.log("订阅消息 成功 "+res);
         ,
        fail :(errCode,errMessage) => 
          console.log("订阅消息 失败 "+errCode+" message "+errMessage);
        ,
        complete:(errMsg)=>
          console.log("订阅消息 完成 "+errMsg);
          that.toHome();
        
    
      );

以上是关于requestSubscribeMessage:fail can only be invoked by user TAP gesture 微信小程序调起订阅消息失败的主要内容,如果未能解决你的问题,请参考以下文章