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();
        }
    
      });
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早起的年轻人

创作源于分享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值