期望的效果【目标】如下:
分析
要实现的效果是订阅消息。消息通知、一次性订阅消息。 订阅消息简介: 订阅消息的能力,可以实现服务的闭环和更优的体验。 订阅消息推送位置:服务通知
订阅消息下发条件:用户自主订阅。即用户可以选择“拒绝” 或 “拒绝,不再询问” 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面。【连接特性】
消息类型简介 1. 一次性订阅消息 一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
2. 长期订阅消息 一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。 目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
3. 设备订阅消息 设备订阅消息是一种特殊类型的订阅消息,它属于长期订阅消息类型,且需要完成「设备接入」才能使用。 设备订阅消息用于在设备触发某些需要人工介入的事件时(例如设备发生故障、设备耗材不足等),向用户发送消息通知。
确定达到目标的路径 step1:是否满足条件 step2:获取模板ID step3:向用户申请下发权限 step4:下发订阅消息
开始“拼”小程序组件:
1、满足条件。一次订阅消息 对所有小程序开放,只限制可用模板的样式和数量。
2、选择模板
3、向用户申请下发权限。使用button组件来实现
此处点击“同意”。【这个弹窗“丑”的问题,后面再解释】
step4:组装下发订阅消息的数据格式 消息内容填充规则: 在模板列表中,点击想查看记录的“详情”
结合如下的API说明
会是这种格式:
{
"template_id": "6xJoVvHKfFjlSYIDFlzWlxSc0fcNiklgyMseikVCvuM",
"page": "pages/index/index",
"touser": "ofXsL0YyncJlBqMJMem",
"data": {
"thing5": {
"value": "购买比亚迪"
},
"thing6": {
"value": "关注公众号联系客服小姐姐领取"
},
"thing2": {
"value": "iPhone 14"
}
}
}
step5:下发订阅消息
或
step6:查看效果
至此,“拼”好了【除 申请下发权限 弹窗“丑”】 弹窗“丑”,是微信开发者工具的原因。 把小程序上传,用手机打开体验版小程序,弹窗会在底部,也漂亮很多
“全部拒绝,不再询问”:上面的两个订阅消息都不要。 此时,如果服务器调接口发送时,会报错:
至此,done
分享下踩的坑
1、{"errcode":47003,"errmsg":"argument invalid! data.thing5.value invalid rid: 6402212b-5dff25aa-1325da07"}
解决办法: 按订阅消息的规则,调整订阅消息参数内容的长度小于20个字符
Show the code:
前端: https://gitee.com/baidumap/wx_user/blob/master/front_end/pages/message/message.wxml https://gitee.com/baidumap/wx_user/blob/master/front_end/pages/message/message.js 后端: https://gitee.com/baidumap/wx_user/blob/master/back_end/src/main/java/com/wx/adapter/api/MiniAppUserController.java