收藏
回答

小程序消息订阅后,消息时而能收到,时而收不到

用户的小程序中的消息接收设置为接收,

但是在接收消息时却提示

发送的逻辑也就是
public void sendPublishTaskMsgNew(HashSet<User> userList, TaskInfoVO taskInfoVO, String content) {
    List<WxMaSubscribeMessage.MsgData> msgDataList = new ArrayList<>();

    //任务类别
    WxMaSubscribeMessage.MsgData msgThing1 = new WxMaSubscribeMessage.MsgData();
    msgThing1.setName(SubscribeTemplateTypeEnum.THING1.getName());
    msgThing1.setValue(DictBizCache.getValue("YJ_RYLB", taskInfoVO.getTaskType()) + "-" + DictBizCache.getValue("YJ_RYLB", taskInfoVO.getTaskSecondType()));
    msgDataList.add(msgThing1);
    //任务名称
    WxMaSubscribeMessage.MsgData msgThing2 = new WxMaSubscribeMessage.MsgData();
    msgThing2.setName(SubscribeTemplateTypeEnum.THING2.getName());
    msgThing2.setValue(taskInfoVO.getTaskName());
    msgDataList.add(msgThing2);
    //发送时间
    WxMaSubscribeMessage.MsgData msgThing3 = new WxMaSubscribeMessage.MsgData();
    msgThing3.setName(SubscribeTemplateTypeEnum.TIME3.getName());
    msgThing3.setValue(DatePattern.CHINESE_DATE_TIME_PATTERN.format(DateUtil.now()));
    msgDataList.add(msgThing3);
    //专长要求
    WxMaSubscribeMessage.MsgData msgThing4 = new WxMaSubscribeMessage.MsgData();
    msgThing4.setName(SubscribeTemplateTypeEnum.THING4.getName());
    if (taskInfoVO.getTaskNeedSkill() != null & !"".equals(taskInfoVO.getTaskNeedSkill())) {
       msgThing4.setValue(DictBizCache.getValue("YJ_ZCXX", taskInfoVO.getTaskNeedSkill()));
    }else {
       msgThing4.setValue("无");
    }
    msgDataList.add(msgThing4);
    userList.forEach(e -> {
       log.info("用户姓名{},用户电话{}",e.getName(),e.getAccount());
       if (ObjectUtil.isNotEmpty(e.getOpenId())) {
          WxMaSubscribeMessage wxMaSubscribeMessage = new WxMaSubscribeMessage();
          wxMaSubscribeMessage.setData(msgDataList);
          wxMaSubscribeMessage.setPage("pages/index/index");
          wxMaSubscribeMessage.setTemplateId(TASK_TEMPLATE_ID);
          wxMaSubscribeMessage.setToUser(UserCache.getUser(e.getId()).getOpenId());
          try {
             wxMaService.getSubscribeService().sendSubscribeMsg(wxMaSubscribeMessage);

          } catch (WxErrorException wxErrorException) {
             log.error("发送订阅消息失败:" + wxErrorException.getError());
          }
       }
    });
}
最后一次编辑于  12-03
回答关注问题邀请回答
收藏

2 个回答

  • 哄哄
    哄哄
    12-03

    43101说明用户取消了订阅或者是没有订阅次数,

    用户点击订阅一次才可以发送一次,用户订阅次数不够

    12-03
    有用 1
    回复 6
    • 张耿
      张耿
      12-03
      订阅次数?一次性订阅也有订阅次数的限制?
      12-03
      回复
    • 哄哄
      哄哄
      12-03回复张耿
      你才知道呀,除非你是公共行业,或是政府 可以申请长期模版,《一次性》的意思就代表一次呀
      12-03
      1
      回复
    • 张耿
      张耿
      12-03回复哄哄
      我们这个主体就是政府,你这意思就是只要把一次性模板换成长期模板就可以对吧。
      那我们可以尝试一下
      12-03
      回复
    • 哄哄
      哄哄
      12-03回复张耿
      对,那你可以试试
      12-03
      1
      回复
    • 张耿
      张耿
      12-03回复哄哄
      那他微信给的错误码就不对,应该给一个订阅次数用完之类的错误提示
      12-03
      回复
    查看更多(1)
  • 随風飄扬
    随風飄扬
    12-03

    有长期订阅权限?没有的话订阅一次只能发送一次,再次发就会报错发不出去

    12-03
    有用
    回复 5
    • 张耿
      张耿
      12-03
      模板是一次性订阅模板
      12-03
      回复
    • 张耿
      张耿
      12-03
      这个长期订阅权限是怎么获取的?
      12-03
      回复
    • 张耿
      张耿
      12-03
      所有用户的消息订阅设置都是接收。但就是平台发消息有时可以收到,有时却收不到。
      12-03
      回复
    • 随風飄扬
      随風飄扬
      12-03回复张耿
      一次性订阅如果对方没订阅,或者已经发送过了就发不了了。长期模版要自己去申请咯,有主体限制的,注意看清楚就行了
      12-03
      回复
    • 张耿
      张耿
      12-04
      谢谢您
      12-04
      回复
登录 后发表内容