Exemple #1
0
 /// <summary>
 /// 初始化推送信息供应商
 /// </summary>
 public static void InitSender()
 {
     PushSenderManager.AddOrUpdateSender(1, new UMSender());     //友盟推送
     //PushSenderManager.AddOrUpdateSender(2, new AppleSender());//苹果推送(废弃)
     PushSenderManager.AddOrUpdateSender(3, new MiSender());     //小米推送
     PushSenderManager.AddOrUpdateSender(4, new HuaweiSender()); //华为推送
 }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <summary>
        /// 将消息推送给推送平台
        /// </summary>
        /// <param name="list"></param>
        /// <param name="channel"></param>
        /// <param name="requestTime"></param>
        /// <returns></returns>
        public SenderRet SendPushMsgListToProvider(List <SendProcessDto> processList, SystemTypeEnum systemType, ChannelDto channelDto, out int requestTime)
        {
            string    retMsg    = string.Empty;
            SenderRet senderRet = new SenderRet {
                IsSuccess = true
            };

            requestTime = 0;
            if (processList == null || processList.Count == 0)
            {
                senderRet.IsSuccess = false;
                senderRet.Msg       = "SendProcessDtoList为空";
                return(senderRet);
            }
            int           appId = processList.First().AppId;
            AppChannelDto appChannelDto;

            if (!_channelLogic.CheckAppChannel(appId, (int)systemType, channelDto.Id, out appChannelDto, out retMsg))
            {
                senderRet.IsSuccess = false;
                senderRet.Msg       = retMsg;
                return(senderRet);
            }
            //推送第三方平台  友盟只能单推,小米可以批量推,个推也能批量推送
            ISender sender = PushSenderManager.GetSender(channelDto.Id);

            if (sender == null)
            {
                senderRet.IsSuccess = false;
                senderRet.Msg       = string.Format("ChannelId:{0},推送信息供应商不存在", channelDto.Id);
                return(senderRet);
            }
            PushChannelModel pushChannelModel = new PushChannelModel
            {
                ChannelName    = channelDto.ChannelName,
                Url            = channelDto.MultiUrl,
                AppKey         = appChannelDto.AppKey,
                AppSecret      = appChannelDto.AppSecret,
                ProductionMode = Convert.ToBoolean(_configLogic.GetConfigValue(ConfigKey.ProductionMode)),
                SystemType     = systemType,
                PushNum        = channelDto.PushNum ?? 50,
                TimeOut        = channelDto.PushTimeOut
            };
            List <PushMsgModel> pushMsgModelList = processList.Select(e =>
            {
                return(new PushMsgModel
                {
                    Id = e.Id,
                    Ticker = e.Title,
                    Title = e.Title,
                    Msg = e.Msg,
                    AttachInfo = e.AttachInfo,
                    DeviceToken = e.DeviceToken,
                    SystemType = systemType
                });
            }).ToList();
            var       isRealPushMsg = _configLogic.GetConfigValue(ConfigKey.IsRealPushMsg);
            Stopwatch sw            = new Stopwatch();

            sw.Start();
            if (isRealPushMsg != null && Convert.ToBoolean(isRealPushMsg))
            {
                senderRet = sender.SendList(pushChannelModel, pushMsgModelList);
            }
            else
            {
                Thread.Sleep(2000);
                senderRet = new SenderRet {
                    IsSuccess = true, Sign = Guid.NewGuid().ToString()
                };
            }
            sw.Stop();
            requestTime = (int)sw.ElapsedMilliseconds;
            return(senderRet);
        }