微信小游戏订阅消息

微信官方接口: 点击这里
wx.requestSubscribeMessage(Object object)
注意事项
一次性模板 id 和永久模板 id 不可同时使用。
低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
2.8.2 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。
2.10.0 版本开始,开发版和体验版小程序将禁止使用模板消息 formId。
开发环境:
LayaBox 1.8.5
步骤:
1.申请模板id
2.调用wx.requestSubscribeMessage
问题:
直接在代码里调用wx.requestSubscribeMessage,会发现微信返回:
"errMsg":"requestSubscribeMessage:fail require user interaction (only in touchend event)"
原来在2.8.2版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。而LayaBox1.8.5的触摸事件和微信的触摸事件是不同的,LayaBox自己有封装的事件处理,并没有监听微信的事件。
解决办法:
在游戏里订阅消息的界面添加一个wx.onTouchEnd点击这里,获取回调中的touches计算出坐标点,再转换成lacal坐标,进行判断是否点击了按钮,如果是则触发调用wx.requestSubscribeMessage

MiniAdpter.window.wx.onTouchEnd(this.onWXTouchEnd); // 监听点击
__proto.onWXTouchEnd=function(e){
	var touches=e.changedTouches[0];
	DispatchManager.dispatchEvent("WX_GAME_DISPATCHER",[touches.clientX+touches.pageX,touches.clientY+touches.pageY]); // 这里要派发事件,onWXTouchEnd的环境里是找不到按钮对象的
}
__proto.onCheckClick=function(x,y){ // 监听派发的函数
	var p=this.btnBox.globalToLocal(new Point(x,y));
	if(p.x >=this.okBtn.x && p.x <=this.okBtn.x+this.okBtn.width && p.y >=this.okBtn.y && p.y <=this.okBtn.height+this.okBtn.y+150){ // okBtn是订阅按钮
		if(this.templId !=""){
			//调用wx.requestSubscribeMessage
		}
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值