文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

小程序订阅消息

2023-09-02 18:25

关注

小程序的订阅通知,可以极大提升用户的使用体验感,消息能力是小程序能力中的重要组成。

小程序的订阅通知权限申请会以卡片的形式从底部弹出,用户点击订阅消息按钮之后,微信会向开发者服务器推送消息。

消息类型

1. 一次性订阅消息

一次性订阅,相当于用户给使用的小程序门票,用户每约定一次,开发者就会有一次向用户发送消息的机会,开发者不可无限制的i向用户发送消息,每条消息可单独订阅或退订。

2. 长期订阅消息

一次性订阅消息可满足小程序的大部分服务场景需求,用户订阅一次后,开发者可长期下发多条消息。

目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

使用说明

1.获取模板id

在微信公众平台手动配置获取模板 ID:

登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

 

2.获取下发权限

一次性订阅消息、长期订阅消息,详见接口 wx.requestSubscribeMessage

设备订阅消息,详见接口 wx.requestSubscribeDeviceMessage

3.调用接口下发订阅消息

一次性订阅消息、长期订阅消息,详见服务端接口 subscribeMessage.send,次数限制:开通支付能力的小程序下发上限是3kw/日,没开通的是1kw/日。

注意事项

订阅消息事件推送

1、当用户触发订阅消息弹框后,用户的相关行为事件结果会推送至开发者所配置的服务器地址或微信云托管服务。

XML格式示例

            1610969440                                                        2                                                    2            

JSON 格式示例

{  "ToUserName": "gh_123456789abc",  "FromUserName": "o7esq5OI1Uej6Xixw1lA2H7XDVbc",  "CreateTime": "1620973045",  "MsgType": "event",  "Event": "subscribe_msg_popup_event",  "List": [   {        "TemplateId": "hD-ixGOhYmUfjOnI8MCzQMPshzGVeux_2vzyvQu7O68",        "SubscribeStatusString": "accept",        "PopupScene": "0"    }], }

若 "List" 只有一个对象,则只返回对象本身;若 "List" 多于一个对象,则返回一个包含所有对象的数组。

参数说明

参数说明
ToUserName小程序帐号ID
FromUserName用户openid
CreateTime时间戳
TemplateId模板id(一次订阅可能有多个id)
SubscribeStatusString订阅结果(accept接收;reject拒收)
PopupScene弹框场景,0代表在小程序页面内,小程序外为空
MsgType消息类型
Event事件类型

参数处理

xml转map工具类

public static Map xmlToMap(String xml) throws Exception {    Map map = new HashMap();    Document document = DocumentHelper.parseText(xml);    Element root = document.getRootElement();    List elements = root.elements();    for (Element element : elements) {        map.put(element.getName(), element.getText());    }    return map;}

因为推送的是时间戳格式,转换成"yyyy-MM-dd:HH-mm-ss"格式

long timestamp = Long.parseLong(subscribeTimeStamp);//将时间戳转换为long类型Date date = new Date(timestamp * 1000);//将时间戳转换为Date类型SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss");//设置时间格式String subscribeTime = sdf.format(date);//将时间戳转换为String类型

当用户在手机端服务通知里消息卡片右上角“...”管理消息时,相应的行为事件会推送至开发者所配置的服务器地址或微信云托管服务。(目前只推送取消订阅的事件,即对消息设置“拒收”)

XML 格式示例

            1610969440                                                      

JSON 格式示例

{      "ToUserName": "gh_123456789abc",      "FromUserName": "o7esq5OI1Uej6Xixw1lA2H7XDVbc",      "CreateTime": "1610968440",      "MsgType": "event",      "Event": "subscribe_msg_change_event",      "List": [  {                "TemplateId":"BEwX0BOT3MqK3Uc5oTU3CGBqzjpndk2jzUf7VfExd8",                "SubscribeStatusString": "reject"      }],}

这里变换的只有SubscribeStatusString参数reject为拒收accept为接收

调用订阅消息接口发送消息给用户的最终结果,会推送下发结果事件至开发者所配置的服务器地址或微信云托管服务。

XML 格式示例

            1610969468                                       1700827132819554304            0                        

JSON 格式示例

{    "ToUserName": "gh_123456789abc",    "FromUserName": "o7esq5PHRGBQYmeNyfG064wEFVpQ",    "CreateTime": "1620963428",    "MsgType": "event",    "Event": "subscribe_msg_sent_event",    "List": {        "TemplateId": "BEwX0BO-T3MqK3Uc5oTU3CGBqzjpndk2jzUf7VfExd8",        "MsgID": "1864323726461255680",        "ErrorCode": "0",        "ErrorStatus": "success"      }      }

"ErrorCode": "0" 表示成功

来源地址:https://blog.csdn.net/ssghzxc/article/details/130273305

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯