评论

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

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

前言

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  
点赞 29
收藏
评论

60 个评论

  • 落著
    落著
    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
      回复
  • 李毅|小程序定制开发
    李毅|小程序定制开发
    2019-12-20

    一天可以采集多少次 用户授权啊?


    2019-12-20
    赞同
    回复 1
    • 拾忆
      拾忆
      2019-12-20
      没限制
      2019-12-20
      回复
  • ziyouzhe4
    ziyouzhe4
    2019-12-19

    你好,真机调试,订阅消息成功, 但是服务通知收不到消息? 自己创建云函数调用的


    // 拿到模板id

    const template_id = '1S0VvnKudISBpgdTvg89tUtTF-Dg1CSdLDjh2BDdGvw'

    const { OPENID } = cloud.getWXContext()


    return cloud.openapi.subscribeMessage.send({

    "touser": OPENID

    "template_id": template_id,

    "data": {

    "keyword1": {

    "value": "今天"

    },

    "keyword2": {

    "value": "2019年12月19日 18:60:00"

    },

    "keyword3": {

    "value": "¥200.00"

    },

    "keyword4": {

    "value": "请您及时查收。"

    },

    "keyword5": {

    "value": "转账成功。"

    }

    }

    })


    求解决办法

    2019-12-19
    赞同
    回复 1
    • 拾忆
      拾忆
      2019-12-19
      首先订阅消息的模板就不对,不是keyword这种形式了,仔细看看文档。
      2019-12-19
      回复
  • 😯
    😯
    2019-12-13

    感谢楼主的分享~

    微信不会为开发者保存订阅次数,需要自己在后台记录用户触发的次数。超过次数调用接口下发订阅消息会返回失败

    关于上边这一点,想请教一下,订阅次数用完之后,再频繁请求消息下发接口会不会被微信封号??官方的联系方式在哪里能找到呢?

    2019-12-13
    赞同
    回复 3
    • 拾忆
      拾忆
      2019-12-13
      正常发送订阅消息不会被封号,因为模板基本都是审核过的,但是如果有用户投诉那肯定官方也会去复查的。官方的联系方式就是社区呀~
      2019-12-13
      回复
    • 😯
      😯
      2019-12-13回复拾忆
      谢谢,楼主牛比!
      2019-12-13
      回复
    • 佩恩
      佩恩
      2019-12-22
      我也遇到这问题,而且我确定我的参数传的对的,并没有用老的那套keyword,就用了他新的这种,可是手机上还是没收到订阅消息
      2019-12-22
      回复
  • 禁衛軍
    禁衛軍
    2019-12-13

    微信作为独裁者,就是万恶之源

    2019-12-13
    赞同
    回复 1
    • 拾忆
      拾忆
      2019-12-13
      当你做支付宝百度小程序的时候你不会认为他们也是独裁者么?
      2019-12-13
      回复
  • ☁博
    ☁博
    2019-12-13

    我想请问一下,后端调用微信官方api成功后会返回什么值?

    2019-12-13
    赞同
    回复 2
    • 拾忆
      拾忆
      2019-12-13
      {"errcode":0,"errmsg":"ok"}
      2019-12-13
      回复
    • ☁博
      ☁博
      2019-12-13回复拾忆
      感谢!
      2019-12-13
      回复
  • TangSeng
    TangSeng
    2019-12-12

    经测试发现:1.接口wx.requestSubscribeMessage在Android7.0.9版本上,有概率不返回的情况(任何回调都不调用)

    2.该接口的其他缺点不一一吐槽了



    2019-12-12
    赞同
    回复 1
    • 拾忆
      拾忆
      2019-12-12
      目前ios还只是7.0.8~还没遇到过你说的问题。该吐槽就吐槽~又不烦人。
      2019-12-12
      回复
  • .
    .
    2019-12-11

    我想问一个模板配置的问题,我配置订阅消息模板的时候最多选择5个关键字,这个可以申请更多的数量吗

    2019-12-11
    赞同
    回复 2
    • 拾忆
      拾忆
      2019-12-11
      这个按照官方目前的规则是不可以的
      2019-12-11
      1
      回复
    • .
      .
      2019-12-11回复拾忆
      好吧,感谢
      2019-12-11
      回复
  • Exception
    Exception
    2019-12-09

    请问前端小程序登录的用户同意了订阅消息,后端发送订阅消息时把openid换了,是不是返回43101拒绝订阅啊

    2019-12-09
    赞同
    回复 3
    • 拾忆
      拾忆
      2019-12-09
      后端为什么要换openid?
      2019-12-09
      回复
    • Exception
      Exception
      2019-12-10回复拾忆
      比如你查看了一个用户的文章,要通知发文章的人,"某人查看了你的文章",前端小程序调用模板授权方法同意订阅的消息的人和接收订阅消息的人不一致,这时会返回43101吗?
      2019-12-10
      回复
    • 拾忆
      拾忆
      2019-12-10
      不一致肯定不可以的~
      2019-12-10
      回复
  • 老太头丶Lotatall
    老太头丶Lotatall
    2019-12-06

    我想问一下  触发这个api之后用户授权完成 是不是以后用户都不用再次授权就可以给用户推送消息了 有时间限制吗

    2019-12-06
    赞同
    回复

正在加载...

登录 后发表内容