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();
        }
    
      });
}
早起的年轻人 CSDN认证博客专家 移动开发 项目管理 Java
只要用心去做,每一件事情还是有可能成功的,当然成功是没有界限的,只不过是达到自己心里的那个目标,公众号:我的大前端生涯,一个爱喝茶的程序员,通常会搞搞SpringBoot 、Herbinate、Mybatiys、Android、iOS、Flutter、Vue、小程序等.
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页