Beispiel #1
0
 public void _Update(SendJson send)
 {
     Id         = send.Id;
     Type       = send.Type ?? Type;
     FromUserId = send.FromUserId;
     ToUserId   = send.ToUserId;
     MsgId      = send.MsgId;
     FromTime   = send.FromTime ?? FromTime;
     ToTime     = send.ToTime ?? ToTime;
 }
Beispiel #2
0
        /// <summary>
        /// 推送消息
        /// </summary>
        /// <param name="parms"></param>
        /// <returns></returns>
        public RspJson Send(SendParms parms)
        {
            RspJson rspJson = new RspJson();

            try
            {
                string   ts   = UMengHelper.GetTimeStamp();
                SendJson json = new SendJson();
                json.appkey        = parms.key;
                json.timestamp     = ts;
                json.type          = parms.type;
                json.device_tokens = parms.deviceTokens;
                payload            payload = new payload();
                UMengHelper.policy policy  = new UMengHelper.policy();
                policy.expire_time = parms.expire_time.ToString("yyyy-MM-dd HH:mm:ss");

                switch (parms.type)
                {
                //单播
                case "unicast":
                    policy.start_time = parms.start_time.ToString("yyyy-MM-dd HH:mm:ss");
                    break;

                //广播
                case "broadcast":
                    policy.start_time = parms.start_time.ToString("yyyy-MM-dd HH:mm:ss");
                    break;

                //组播
                case "groupcast":
                    policy.start_time = parms.start_time.ToString("yyyy-MM-dd HH:mm:ss");
                    json.filter       = UMengHelper.GetFilterInfo(parms.CityCode, parms.Tag);
                    break;

                default:
                    // display_type = "notification";
                    break;
                }

                if (parms.platform == "ios" || parms.platform == "ipad")
                {
                    payload.aps = new aps()
                    {
                        alert = parms.alert
                    };
                }

                json.policy          = policy;
                payload.YGAction     = parms.ygAction;
                json.payload         = payload;
                json.production_mode = AppObjMrg.Config.UmengProduction; //是否生产环境-测试
                json.description     = parms.description;
                JsonSerializerSettings jsetting = new JsonSerializerSettings();
                jsetting.DefaultValueHandling = DefaultValueHandling.Ignore;
                string str = JsonConvert.SerializeObject(json, Formatting.Indented, jsetting);

                string url    = "http://msg.umeng.com/api/send";
                string mysign = UMengHelper.getMD5Hash("POST" + url + str + parms.secret);

                url = url + "?sign=" + mysign;
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                request.Method = "POST";

                byte[] bs = Encoding.UTF8.GetBytes(str);
                request.ContentLength = bs.Length;
                using (Stream reqStream = request.GetRequestStream())
                {
                    reqStream.Write(bs, 0, bs.Length);
                    reqStream.Close();
                }
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream          stream   = response.GetResponseStream();
                StreamReader    sr       = new StreamReader(stream);
                string          resStr   = sr.ReadToEnd();

                UMengHelper.ResponseUmeng res = JsonConvert.DeserializeObject <UMengHelper.ResponseUmeng>(resStr);
                if (res.ret == "SUCCESS")
                {
                    rspJson.RspCode = 1;
                    if (string.IsNullOrEmpty(res.data.msg_id))
                    {
                        rspJson.RspMsg = res.data.task_id;
                    }
                    else
                    {
                        rspJson.RspMsg = res.data.msg_id;
                    }
                    LogManager.WriteAppWork("SendUmengSuccess", string.Format("友盟消息发送成功:body:{0}", str));
                }
                else
                {
                    rspJson.RspCode = 0;
                    rspJson.RspMsg  = res.data.error_code;
                    LogManager.WriteAppError(ErrorLevel.High, string.Format("友盟发送失败,原因{0}", res.data.error_code));
                }
            }
            catch (WebException e)
            {
                if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    Stream       myResponseStream = ((HttpWebResponse)e.Response).GetResponseStream();
                    StreamReader myStreamReader   = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                    string       retString        = myStreamReader.ReadToEnd();
                    LogManager.WriteAppError(ErrorLevel.High, string.Format("友盟发送异常,原因{0}", retString));
                    rspJson.RspCode = 2;
                    rspJson.RspMsg  = retString;
                }
            }
            return(rspJson);
        }
Beispiel #3
0
        public object Any(SendJson request)
        {
            base.Response.AddHeader("X-Args", $"{request.Id},{request.Name}");

            return(request.RequestStream.ReadFully());
        }
Beispiel #4
0
 public Send(SendJson send)
 {
     _Update(send);
 }
Beispiel #5
0
        public async Task <object> Any(SendJson request)
        {
            base.Response.AddHeader("X-Args", $"{request.Id},{request.Name}");

            return(await request.RequestStream.ReadFullyAsync());
        }