爱做饭的电饭煲

一个帮助现实中打牌的人记分的微信小程序,需要每局记分。
问题:ab同时在小程序里,a发送结算通知,b能收到;a在小程序,b不在,a发送结算通知,b再进入小程序接收不到,需要a再发送。能否做到a发送了,b即使不在小程序,只要登录小程序就能接受到?或者有什么其他方法可以解决确认问题?
ab同时在小程序里,a发送,b能收到,
想要实现a发送了,b即使不在小程序,只要登录小程序就能接受到:
可以考虑以下方案:
当用户操作引发事件推送时,微信服务器会将消息以及数据包发送到配置的url,根据a用户和b用户对不同的消息类型进行相应处理
项目中的需求是当用户b打开后,自动回复a发送的结算通知。

public class MsgController extends BaseController{ @Autowired private WxConfig wxConfig; @Autowired private MpService mpService; @RequestMapping(value = "/reply",method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String reply(@RequestParam("signature") String signature, @RequestParam("timestamp") String timestamp, @RequestParam("nonce") String nonce, @RequestBody Map<String,String> param) throws Exception { mpService.msgReply(signature,timestamp,nonce,param,wxConfig); return "success"; } } public class MpService { @Autowired private AccessTokenUtils accessTokenUtils; @Resource(name = "redisTemplateBusiness") private RedisTemplate redisTemplate; public void msgReply(String signature,String timestamp,String nonce, Map<String,String> param,WxConfig wxConfig) throws Exception { MpSignService signService=new MpSignService(signature,wxConfig.getMpMsgReplyToken(),nonce,timestamp); if(!signService.validate()){ return; } log.info(JsonUtil.toJson(param)); String fromUserName=param.get("FromUserName"); String msgType=param.get("MsgType"); String event=param.get("event"); if(msgType.equals("event")&& StringUtils.isNotEmpty(event)&&event.equals("user_enter_tempsession")) { //查询openid(用户b)是否已经接受消息 if(isNewUser(fromUserName)) { String token = accessTokenUtils.getToken(wxConfig.getMpAppId(), wxConfig.getMpAppSecret()); this.sendQywxImage(fromUserName, token); } } } private void sendQywxImage(String openId,String accessToken) throws Exception { String url=String.format(PushConstants.WxUrl.MP_MSG_SEND_MSG_URL,accessToken); Map<String,Object> map = new HashMap(); map.put("touser",openId); map.put("msgtype","image"); Map<String,String> m=new HashMap(); m.put("media_id",(String)redisTemplate.opsForValue().get(CachePrefix.QYWX_QRCODE)); map.put("image",m); String result=HTTPUtils.httpPost(url,map); log.info(result); } }

2024-10-18 00:28 点击量:20