小程序 订阅消息 基础库版本和客户端版本判断函数 和 注意事项

低版本只能一次订阅一个模板消息,订阅多个模板会报错,下面代码为了兼容不同版本基础库和客户端(一次订阅一条模板消息还是多条模板消息)

subscribeMessage(tmplIds, desc){
	console.log('-------订阅消息subscribeMessage------')
	try{
		
		const sysInfo = wx.getSystemInfoSync()
		if (!sysInfo) {
			throw new ServiceError({
				msg: '[getSystemInfoSync]无返回'
			})
		}
		const { system, SDKVersion, version } = sysInfo
		const sysVersion = system.split(" ")
		const verArr = version.split('.')
		for(let i = 0; i < verArr.length; i++){
			if(verArr[i].length<2) verArr[i] = "0" + verArr[i]
		}
		let IOSVer = "070006" 
		let AndroidVer = "070007"
		const ver = verArr.join('')
		const sdkversion = SDKVersion.replace(/\./g,'')
		// 基础库低于2.4.4 不拉起订阅消息
		if(sdkversion < 244) return 
		// IOS和Android系统微信客户端版本判断
		if ((sysVersion[0] === 'iOS' && parseInt(ver, 10) < parseInt(IOSVer, 10)) || (sysVersion[0] === 'Android' && parseInt(ver, 10) < parseInt(AndroidVer, 10))) {
			wx.requestSubscribeMessage({
				tmplIds: tmplIds.slice(0,1),
				complete(subscribeRes) {
					return subscribeRes
				}
			})
		} else { 
			wx.requestSubscribeMessage({
				tmplIds: tmplIds.slice(0,3),
				complete(subscribeRes) {
					return subscribeRes
				}
			})
		}
	}catch(err){
		return err
	}
}

注意事项:

1.wx.requestSubscribeMessage()函数在异步函数的then()里面调用失败

代码(调用失败,不弹起订阅消息框,complete回调打印报错提示:失败只能由用户点击手势调用):

<view @tap="subscribeMessage">测试订阅消息</view>

---------

subscribeMessage(){
				this.promiseFunc().then(res=>{
					wx.requestSubscribeMessage({
						tmplIds: ['NgVRHh1qSVoikJ_RJ6Hc1Txres7BNcF3o3-sVKcBu0M'],
						success (res) { 
							console.log('requestSubscribeMessage-success:')
						},
						complete (res) {
							console.log('requestSubscribeMessage-complete:', res)
						}
					})
				})
			}

猜你喜欢

转载自blog.csdn.net/zhongmei121/article/details/105365414