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 微信小程序调起订阅消息失败的主要内容,如果未能解决你的问题,请参考以下文章