今天遇到一个奇葩的问题,我在录入患者资料以后需要告知对方一些信息(如:就诊时间),我再保存以后调用授权API,就调用失败:
db.doc(this.data._id)
.update({data})
.then(()=>{
wx.showToast({
title: '数据修改成功',
icon: 'success',
duration: 1500,
success:()=>{
// this.pageTo('', 1500)
this.saveEditMessage() // 调用授权接受消息函数
}
})
})
我以为是自己消息函数有问题,然后使用按钮调用,然后就可以:
<button type="primary" bindtap="saveEditMessage">授权</button>
调用授权(简化):
saveEditMessage(){
wx.requestSubscribeMessage({
tmplIds: [tmplIds],
success: res => {
console.log('订阅消息 成功:' + res);
},
fail: err => {
console.error("订阅消息 失败:" + err);
}
})
}
这是我代码的问题还是小程序故意设置这种要求??如果是,实在想不通为什么要这样搞。
是的,需要用户点击事件里才能授权成功
有些api是需要用户主动触发。你可以在触发成功回调里面做业务处理
1,需要点按钮订阅
2,尽量标明是订阅通知
3,配合后端判断入库openid,不然可能1次接收到多条同样的信息。