/// <summary> /// 接收外部推送消息,如果时效时间为空。默认24小时 /// </summary> /// <param name="model"></param> /// <param name="retMsg"></param> /// <returns></returns> public ErrCode AcceptMsgList(SendMsgListRequest model, out string retMsg) { retMsg = string.Empty; ErrCode errorCode = CheckAcceptMsg(model, out retMsg); if (errorCode != ErrCode.Sucess) { return(errorCode); } int length = model.TokenList.Count; //判断接收人的个数是否超出上限 var tokenMaxNum = Convert.ToInt32(_configLogic.GetConfigValue(ConfigKey.TokenMaxNum)); if (length > tokenMaxNum) { retMsg = string.Format("Token的个数太多,网关限制上限:{0}", tokenMaxNum); return(ErrCode.Failure); } List <SendMsgRequest> sendMsgRequestList = new List <SendMsgRequest>(); foreach (var item in model.TokenList) { SendMsgRequest sendMsgRequest = _mapper.Map <SendMsgRequest>(model); sendMsgRequest.Token = item; sendMsgRequestList.Add(sendMsgRequest); } AcceptMsgListToTheardPool(sendMsgRequestList, out retMsg); return(ErrCode.Sucess); }
/// <summary> /// 推送消息给推送平台 /// </summary> /// <param name="sendProcessDto">推送消息</param> /// <param name="rzTokenBrandDto">注册信息</param> /// <param name="rzTokenBrandDetailDto">注册明细</param> /// <param name="channelDto">通道</param> /// <param name="appChannelDto">App和通道的关系</param> /// <param name="requestTime">请求时间</param> /// <returns></returns> public SenderRet SendPushMsgToProvider(SendProcessDto sendProcessDto, DeviceChannelDto deviceChannelDto, out int requestTime) { SenderRet senderRet = new SenderRet { IsSuccess = true }; //底层发送消息 requestTime = 0; //获取ProductionMode object ProducttMode = _configLogic.GetConfigValue(ConfigKey.ProductionMode); //构造底层推送消息的参数 PushChannelModel pushChannelModel = new PushChannelModel { ChannelName = deviceChannelDto.ChannelName, Url = deviceChannelDto.Url, AppKey = deviceChannelDto.AppKey, AppSecret = deviceChannelDto.AppSecret, ProductionMode = Convert.ToBoolean(ProducttMode) //获取调试模式 }; PushMsgModel pushMsgModel = new PushMsgModel { Ticker = sendProcessDto.Title, Title = sendProcessDto.Title, Msg = sendProcessDto.Msg, AttachInfo = sendProcessDto.AttachInfo, DeviceToken = deviceChannelDto.DeviceToken, SystemType = (SystemTypeEnum)deviceChannelDto.SystemType }; ISender sender = PushSenderManager.GetSender(deviceChannelDto.ChannelId); if (sender == null) { senderRet.IsSuccess = false; senderRet.Msg = string.Format("ChannelId:{0},推送信息供应商不存在", deviceChannelDto.ChannelId); //LogHelper.Error.Write("SendPushMsgToProvider", senderRet.Msg); return(senderRet); } Stopwatch sw = new Stopwatch(); var isRealPushMsg = _configLogic.GetConfigValue(ConfigKey.IsRealPushMsg); sw.Start(); if (isRealPushMsg != null && Convert.ToBoolean(isRealPushMsg)) { senderRet = PushSender.Send(sender, pushChannelModel, pushMsgModel); } else { Thread.Sleep(200); senderRet = new SenderRet { IsSuccess = true, Sign = Guid.NewGuid().ToString() }; } sw.Stop(); requestTime = (int)sw.ElapsedMilliseconds; return(senderRet); }