示例#1
0
        /// <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
                }));
            }
        }
示例#2
0
        /// <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);
        }