微信订阅出现errMsg“:“requestSubscribeMessage:fail can only be invoked by user TAP gesture 解决方案

最近开发在威信小程序让做一个微信消息的订阅,遇到一些坑,记录一下

需求是在提交表单后 通过提交成功后的回调唤起微信订阅框在进行消息订阅的是否开启

之前的方法,直接调用

self.$api.setVisit(params).then(res => {
								if (res.data.code == 200) {
									self.form.fappointid = res.data.msg
									uni.showToast({
										title: "预约成功",
										icon: "success"
									})
	                            //调用订阅
								self.sendSubscription()
								}
							})		
						}

微信订阅的方法

sendSubscription() {
				let self = this
				let fappdate = self.form.userTime.substring(0, 10);
				let fapptime = self.form.userTime.substring(10);
				
				return new Promise((resolve, reject) => {
					wx.requestSubscribeMessage({
						//此处填写刚才申请模板的模板ID
						tmplIds: '此处是你的模板id',
						success(res) {
							resolve(res)
							if (res.ommpLLnzY9ppmvhLLaYj1Ef1sUeWAAeqsmwl1BwFFOs ==
								'accept') {
								if (self.userData[0].fromUser) {
									let params = {
										fappointid: self.form.fappointid,
										fappremind: self.form.fappremind,
										fwechatid: self.userData[0].fromUser,
										fisremind: '是',
									}
									console.log("params: ", params);
									self.$api.editVisit(params).then(res => {
										console.log("修改接口: ", res);
										setTimeout(() => {
											uni.navigateBack({
												delta: 1
											});
										}, 8e2)
									})
									self.$api.getDyInfo(self.userData[0].fromUser).then(
										response => {
											console.log("response: ",
												response);
										})
								}
							}
						},
						fail(res) {
							reject(res)
						}
					})
				})
			},

结果是无法唤起并提示错误 errMsg":"requestSubscribeMessage:fail can only be invoked by user TAP gesture

翻阅文档后发现是不支持回调,更多注意事项可自行查看:wx.requestSubscribeMessage(Object object) | 微信开放文档

 后改为利用点击事件触发,附上代码可参考

	self.$api.setVisit(params).then(res => {
		if (res.data.code == 200) {
			self.form.fappointid = res.data.msg
				uni.showModal({
					title: '温馨提示',
					content: '为更好的促进您与商家的交流,服务号需要在您预约时向您发送消息',
					confirmText: "同意",
					cancelText: "拒绝",
					success: function(res) {
						if (res.confirm) {
						//调用订阅消息
						console.log('用户点击确定');
						//调用订阅
						self.sendSubscription()
						} else if (res.cancel) {
						    console.log('用户点击取消');
							///显示第二个弹说明一下
							wx.showModal({
								title: '温馨提示',
								content: '拒绝后您将无法获取实时消息',
								confirmText: "知道了",
								showCancel: false,
								success: function(res) {
								//点击知道了的后续操作 
								//如跳转首页面 
								    uni.showToast({
									title: '预约成功',
									icon: 'none',
									success() {
										setTimeout(() => {															                               
                                            uni.navigateBack({
												delta: 1
												});
										},8e2)
                                     }
									})
									}
								});
							}
						}
					});
				}
			})

至此 ,问题解决 

如有更优的解决方案,可以交流

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
getUserProfile:fail can only be invoked by user TAP gesture是一个错误信息,表示在获取用户信息时,只能通过用户的点击手势来触发。 这通常是因为在代码中没有正确配置或调用用户信息获取的方法,或者没有在合适的时机触发用户的点击手势导致的。要解决这个问题,您可以检查是否正确配置了获取用户信息的方法,并确保在需要获取用户信息时正确触发了用户的点击手势。这样就可以成功获取用户信息了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.(微信小程序报错)](https://blog.csdn.net/qq_51580852/article/details/126860681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [getUserProfile:fail can only be invoked by user TAP gesture](https://blog.csdn.net/qq_41389354/article/details/122146529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值