评论

「笔记」订阅消息体验踩坑

本文主要是补充一下官方未提供的使用方法,和使用中与模板消息用法的不同。

前言

10月12日夜晚社区发了公告小程序模板消息能力调整通知,正式发布了 一次性订阅消息 这一能力,所以第一时间进行了体验。

本文主要是补充一下官方未提供的使用方法,和使用中与模板消息用法的不同。

文档地址

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html

使用方法

wx.requestSubscribeMessage({
  tmplIds: ["模板id1","模板id2"],
  success: function (res) {
    //成功
  },
  fail(err) {
    //失败
    console.error(err);
  }
})

第一个坑

如果不勾选红色方框内的内容,用户每次触发订阅消息功能都会弹出授权窗口,如果用户勾选了则不会出现弹窗。

第二个坑

目前开发者工具(v1.02.191012)不支持调试,只能通过真机调试。

第三个坑

微信不会为开发者保存订阅次数,需要自己在后台记录用户触发的次数。

超过次数调用接口下发订阅消息会返回失败。

第四个坑

发送模板格式和原来的模板消息格式不一致,特别是data内的内容,订阅消息的字段key是和数据类型有关,value的参数需要严格按照设置的类型提交,具体使用参考后台的模板详情。

模板消息的格式:

"data": {
  "keyword1": {
    "value": "内容",
    "color": "#000"
  },
  "keyword2": {
    "value": "内容",
    "color": "#000"
  }
}

订阅消息的格式:

"data": {
  "thing1": {
    "value": "内容"
  },
  "number2": {
    "value": 20
}

第五个坑

订阅消息申请模板的时候,需要选择所属类目,而且只能是自己小程序相关类目,模板消息是不需要选择对应类目的。

如果删除小程序类目,则会把订阅消息模板一起删除,需谨慎操作。

第六个坑

长期订阅消息只针对特定行业开放,所以普通开发者并无法使用。

结束

暂时就先总结这些,有其它坑再补充。

最后一次编辑于  2019-10-13  
点赞 27
收藏
评论

59 个评论

  • 以笑
    以笑
    01-08

    不论什么情况都需要下发权限吗 支付成功回调还需要掉弹框获取权限吗?

    01-08
    赞同
    回复 2
    • 拾忆
      拾忆
      01-08
      支付我没做,但是看社区里的帖子好像也是要弹窗的。
      01-08
      1
      回复
    • 田博阳
      田博阳
      02-13
      以前模板消息用prepay_id可以发送,现在不可以了
      02-13
      回复
  • 木木
    木木
    01-08

    微信不会为开发者保存订阅次数,需要自己在后台记录用户触发的次数。

    超过次数调用接口下发订阅消息会返回失败。

    具体是限制多少次?有没有详细说明?

    01-08
    赞同
    回复 3
  • 悠悠我心🐒
    悠悠我心🐒
    01-02

    举例-当我只是选了取餐提醒,可是取餐提醒和会员积分变更提醒全都发了消息,如何知道用户选择了哪几个消息通知呢?小程序官方提供了相关接口吗?

    01-02
    赞同
    回复 5
    • 拾忆
      拾忆
      01-02
      根据回调判断
      01-02
      回复
    • 悠悠我心🐒
      悠悠我心🐒
      01-08回复拾忆
      其实还是会有问题,根据你说的前端拿到消息丢给后台进行判断,如果用户选择了总是保持以上选择,那以后就不会在弹了,后台无法判断。就算后台保留上次勾选的选项,那如果用户想变更选项怎么处理呢?微信为啥返回字段 总是保持还是一次性
      01-08
      回复
    • 拾忆
      拾忆
      01-08
      不会弹为什么会影响判断?回调是一样的呀
      01-08
      回复
    • rmy
      rmy
      01-09回复拾忆
      用户是否点击总是保持以上选择,根据回调能知道吗
      01-09
      回复
    • 拾忆
      拾忆
      01-09
      参考下:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html
      01-09
      回复
  • 小鱼儿
    小鱼儿
    01-02

    微信开放平台,向非api方式注册的小程序添加订阅消息,小程序类目不符合订阅消息类目,添加不了,需要手动到微信后台设置类目

    01-02
    赞同
    回复 1
    • 拾忆
      拾忆
      01-02
      目前订阅消息的模版是需要和类目对应。
      01-02
      回复
  • 之一
    之一
    2019-12-30

    订阅消息返回的page如何定义 /pages/index/index?id=123 我是这么定义的 但是显示的是小程序尚未发布是什么原因?

    2019-12-30
    赞同
    回复 5
    • 拾忆
      拾忆
      2019-12-30
      必须线上版本的路径才可以~
      2019-12-30
      回复
    • 之一
      之一
      2019-12-30回复拾忆
      体验版都不可以吗 那这个测试岂不是很有问题
      2019-12-30
      回复
    • 拾忆
      拾忆
      2019-12-30
      一般也没啥测试的
      2019-12-30
      回复
    • 之一
      之一
      2019-12-30回复拾忆
      嗯 正常是这样的 项目比较搞  要做一次二次提醒 所以要看一下返回的参数 现在只能通过编译模式来测试
      2019-12-30
      回复
    • 拾忆
      拾忆
      2019-12-30
      支持体验版的据说在开发中~但是过去了有个把月了吧,然后没然后了。
      2019-12-30
      回复
  • 大吉大利
    大吉大利
    2019-12-28

    第三方平台是面向各行各业的,这是要搞死人,模板消息没有类目的限制,还可以系统预设一套,为用户小程序一键创建模板消息;

    2019-12-28
    赞同
    回复 5
  • Mori
    Mori
    2019-12-27

    tmplIds

    里传递100个同一份id会只生效一次还是100次,有知道的吗?

    2019-12-27
    赞同
    回复 1
    • 拾忆
      拾忆
      2019-12-27
      最多只能3个~3个不一样的各有效一次。
      2019-12-27
      1
      回复
  • 2020
    2020
    2019-12-26

    楼主我这里踩到了一个坑,同一条订阅消息,每天第一次发送的时候可以发送成功,后面则出现以下错误:

    {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hints: [UEMFGH3MRa-LlKm!]"}

    关于 access_token,我是每次调用订阅消息之前都会获取一次最新的,目前这种情况,在体验版出现过两次了,请问楼主能大概知道我这个问题是出在哪里了吗

    2019-12-26
    赞同
    回复 2
    • 2020
      2020
      2019-12-26
      目前我们的使用场景是由一个小程序(A)跳到另外一个小程序B,在小程序B里面支付之后,弹出授权框,当用户同意之后,再调用我们的后端接口来进行发送小程序订阅消息
      2019-12-26
      回复
    • 拾忆
      拾忆
      2019-12-26
      你的access_token每次发送都去获取最新的?是去哪里获取?自己的数据库还是查微信的?
      2019-12-26
      回复
  • 华少
    华少
    2019-12-24

    我这里还发现一个问题,个别机型唤起的订阅消息弹窗样式不对,是Alert类型的,真的是不知道怎么搞了...


    机型:华为nova4

    安卓:9.1


    2019-12-24
    赞同
    回复 2
    • 拾忆
      拾忆
      2019-12-24
      低版本的微信和基础库这个情况是正常的
      2019-12-24
      回复
    • 华少
      华少
      2019-12-24回复拾忆
      哦哦,多谢
      2019-12-24
      回复
  • 落著
    落著
    2019-12-23

    请问一下https调用一直返回,{"errcode":43101,"errmsg":"user refuse to accept the msg hint: [BPDMta02563929]"};

    而且不会弹出订阅授权框是为什么

    <form bindsubmit'submit' report-submit="true">


    2019-12-23
    赞同
    回复 5
    • 拾忆
      拾忆
      2019-12-23
      不能用表单的提交来触发~
      2019-12-23
      回复
    • 落著
      落著
      2019-12-24回复拾忆
      那怎么发?
      2019-12-24
      回复
    • 拾忆
      拾忆
      2019-12-24
      通过 bindtap 触发
      2019-12-24
      回复
    • 落著
      落著
      2019-12-24回复拾忆

              订阅



      submitSendForm:function(e) {
            var formid = e.detail.formId;
            wx.request({
              url: app.globalData.hostUrl + '/api/sendMsg',
              method: "POST",
              data:{
                formId: formid
              },
              header: {
                "Content-type":"application/json"
              },
              success:function(res){
                console.log(res.data)
              },
              fail:function(err){
                console.log(err);
              }
            })
        }
      我写了一个这样的测试,小程序传formId, 后台得到openid,.
      返回的结果就是43101用户拒绝.
      懵逼了, 前几天我测试还可以
      2019-12-24
      回复
    • 落著
      落著
      2019-12-24
      wxml
      form bindsubmit="submitSendForm" report-submit
               button form-type="submit" 订阅  button
      form
      2019-12-24
      回复

正在加载...

登录 后发表内容