/// <summary> /// 插入消息表并推送消息 /// </summary> /// <param name="model">消息</param> /// <param name="ToUserList">接收消息的用户</param> /// <param name="pageArgs">扩展参数,该参数会一起推给客户端</param> /// <param name="silence">是否静默推送</param> /// <returns></returns> public bool SendNotice( RequestNoticeMessageDTO model, List <string> ToUserList = null, bool silence = false, string ServiceID = "", string FromUserID = "", EnumTargetUserCodeType ToUserListType = EnumTargetUserCodeType.UserID) { if (ToUserList == null) { ToUserList = new List <string>(); } var extrasIOS = _GetJMessageExtras(EnumTerminalType.IOS, model, model.PageArgs); var extrasAndroid = _GetJMessageExtras(EnumTerminalType.Android, model, model.PageArgs); using (MQChannel mqChanne = new MQChannel()) { return(mqChanne.Publish(new Dto.EventBus.UserNoticeSendEvent() { MessageID = model.MessageID, Content = model.Content, Title = model.Title, Summary = model.Summary, PageArgs = model.PageArgs, ClientName = model.ClientName, NoticeDate = model.NoticeDate, NoticeSecondType = model.NoticeSecondType, FromUserID = FromUserID, ToUserList = ToUserList, ToUserListType = ToUserListType, extrasAndroid = extrasAndroid, extrasIOS = extrasIOS, serviceID = ServiceID, silence = silence })); } }
/// <summary> /// 生成极光推送的扩展参数 /// </summary> /// <param name="terminalType"></param> /// <param name="noticeMessage"></param> /// <param name="pageArgs"></param> /// <returns></returns> Dictionary <string, object> _GetJMessageExtras(EnumTerminalType terminalType, RequestNoticeMessageDTO noticeMessage, string pageArgs) { var dic = new Dictionary <string, object>(); #region 处理兼容问题(老的APP应用通知类型长度) var NoticeType = ((int)noticeMessage.NoticeSecondType).ToString().PadLeft(7, '0'); var MsgType = int.Parse(NoticeType.Substring(4, 3)); //通知类型是20以下的都需要处理成兼容,后续的类型在20以上 if (MsgType <= 20) { //老的类型需要兼容 dic.Add("MsgType", MsgType); } else { dic.Add("MsgType", NoticeType); } #endregion dic.Add("NoticeType", NoticeType); dic.Add("MsgID", noticeMessage.MessageID); dic.Add("PageArgs", pageArgs); var model = GetMessageExtrasConfig(terminalType, noticeMessage.NoticeSecondType); if (model != null) { dic.Add("PageType", model.PageType); dic.Add("PageUrl", model.PageUrl); } return(dic); }