/// <summary> /// 返回数据和服务器处理状态 /// </summary> /// <param name="code">服务器状态码</param> /// <param name="data">返回业务数据</param> public static HttpResponseMessage CreateDataResponse(HttpStatusCode code, object data = null) { HttpResponseMessage res = new HttpResponseMessage(); res.Content = new StringContent(ObjectExtension.Serialize(data)); res.StatusCode = code; return(res); }
/// <summary> /// 按别名推送消息 /// </summary> /// <param name="appKey">appKey</param> /// <param name="masterSecret">masterSecret</param> /// <param name="alias">多个别名</param> /// <param name="allalert">推送的内容:【2020-04-27 11:39:42】【XXX】于项目【XXX】中添加了问题【sss 】</param> /// <param name="androidtitle">问题模块</param> /// <param name="ios_extraobj">额外的数据对象</param> /// <param name="apns_production">是否为生产环境</param> /// <param name="jiguangPostUrl">极光推送api地址</param> /// <returns></returns> public static string Push( string appKey , string masterSecret , List <string> alias , string allalert , string androidtitle , object ios_extraobj , bool apns_production , string jiguangPostUrl = "https://api.jpush.cn/v3/push") { /* * appKey * "9b3e0bc5xxxxf45dd" * masterSecret * "8cc785xxxx1be5077d6" * alias.Count * 1 * alias[0] * "9d9cx069+axxa+4564+9xx9+591xxx560332" * allalert * "【2020-04-27 11:39:42】【xxx】于项目【xxx】中添加了问题【sss 】" * androidtitle * "xxxx模块" * ios_extraobj * { OrganizeId = "7xxxx1e0-4f4a-xxx2-6xx4-f59xxxxxxx8", Object = {ProBIM.Application.Entity.ProjectManage.msg_msgEntity} } * Object: {ProBIM.Application.Entity.ProjectManage.msg_msgEntity} * OrganizeId: "7xxxx1e0-4f4a-xxx2-6xx4-f59xxxxxxx8" * apns_production * false * jiguangPostUrl * "https://api.jpush.cn/v3/push" */ // 纠正 alias if (alias != null && alias.Count > 0) { for (int i = 0; i < alias.Count; i++) { var ali = alias[i]; alias[i] = ali.Replace("-", "+"); } } // 拼装请求头 var auth = Convert.ToBase64String(Encoding.UTF8.GetBytes(appKey + ":" + masterSecret)); // var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); httpClient.DefaultRequestHeaders.Add("Authorization", String.Concat("Basic ", auth)); //JavaScriptSerializer jser = new JavaScriptSerializer(); #region pushobj var pushobj = new { platform = new List <string>() { "android", "ios" }, audience = new { alias = alias }, notification = new { alert = allalert, android = new { alert = allalert, title = androidtitle }, ios = new { alert = allalert, badge = "+1", extras = ios_extraobj }, }, message = new { msg_content = "message content", title = "title", extras = new { key1 = "value1" } }, options = new { apns_production = apns_production//false } }; #endregion var datastr = ObjectExtension.Serialize(pushobj); //string datastr = jser.Serialize(pushobj); HttpContent httpContent = new StringContent(datastr, Encoding.UTF8); Task <HttpResponseMessage> task = httpClient.PostAsync(jiguangPostUrl, httpContent); task.Wait(); Task <string> task2 = task.Result.Content.ReadAsStringAsync(); task2.Wait(); return(task2.Result); }