/// <summary> /// 多消息推送 /// </summary> /// <param name="Title">通知栏标题</param> /// <param name="Text">通知栏内容</param> /// <param name="Logo">通知栏显示本地图片</param> /// <param name="LogoURL">通知栏显示网络图标</param> /// <param name="TransmissionType">应用启动类型,1:强制应用启动 2:等待应用启动</param> /// <param name="TransmissionContent">透传内容</param> /// <param name="IsRing">接收到消息是否响铃,true:响铃 false:不响铃</param> /// <param name="IsVibrate">接收到消息是否震动,true:震动 false:不震动</param> /// <param name="IsClearable">接收到消息是否可清除,true:可清除 false:不可清除</param> /// <param name="beginTime">设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)</param> /// <param name="endTime">设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)</param> /// <param name="clientIdList">client列表</param> public static void PushMessageToList(string Title, string Text, string Logo, string LogoURL, string TransmissionType, string TransmissionContent, bool IsRing, bool IsVibrate, bool IsClearable, string beginTime, string endTime, List <string> clientIdList) { // 推送主类(方式1,不可与方式2共存) IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); // 推送主类(方式2,不可与方式1共存)此方式可通过获取服务端地址列表判断最快域名后进行消息推送,每10分钟检查一次最快域名 //IGtPush push = new IGtPush("",APPKEY,MASTERSECRET); ListMessage message = new ListMessage(); NotificationTemplate template = NotificationTemplate(Title, Text, Logo, LogoURL, TransmissionType, TransmissionContent, IsRing, IsVibrate, IsClearable, beginTime, endTime); // 用户当前不在线时,是否离线存储,可选 message.IsOffline = true; // 离线有效时间,单位为毫秒,可选 message.OfflineExpireTime = 1000 * 3600 * 12; message.Data = template; //message.PushNetWorkType = 0; //判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为不限制网络环境。 //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); foreach (string item in clientIdList) { com.igetui.api.openservice.igetui.Target target = new com.igetui.api.openservice.igetui.Target(); target.appId = APPID; target.clientId = item; targetList.Add(target); } String contentId = push.getContentId(message); String pushResult = push.pushMessageToList(contentId, targetList); }
/// <summary> /// 推送多个用户 /// </summary> /// <returns></returns> public string PushMultiple(ITemplate template) { IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); ListMessage message = new ListMessage(); message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选 message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选 message.Data = template; //message.PushNetWorkType = 0;//判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为非WIFI环境 //设置接收者 List <Target> targetList = new List <Target>(); for (var i = 0; i < CLIENTID.Count; i++) { Target target = new Target(); target.appId = APPID; target.clientId = CLIENTID[i]; targetList.Add(target); } String contentId = push.getContentId(message, "任务组名"); String pushResult = push.pushMessageToList(contentId, targetList); return(pushResult); }
//PushMessageToList接口测试代码 public static void PushMessageToList(string[] arr, string[] arr2) { // 推送主类(方式1,不可与方式2共存) IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); // 推送主类(方式2,不可与方式1共存)此方式可通过获取服务端地址列表判断最快域名后进行消息推送,每10分钟检查一次最快域名 //IGtPush push = new IGtPush("",APPKEY,MASTERSECRET); ListMessage message = new ListMessage(); NotificationTemplate template = NotificationTemplateDemo(arr); // 用户当前不在线时,是否离线存储,可选 message.IsOffline = false; // 离线有效时间,单位为毫秒,可选 message.OfflineExpireTime = 1000 * 3600 * 12; message.Data = template; message.PushNetWorkType = 0; //判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为不限制网络环境。 //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); com.igetui.api.openservice.igetui.Target target = null; for (int i = 0; i < arr2.Length; i++) { target = new com.igetui.api.openservice.igetui.Target(); target.appId = APPID; target.clientId = arr2[0]; targetList.Add(target); } // List<com.igetui.api.openservice.igetui.Target> targetList = new List<com.igetui.api.openservice.igetui.Target>(); //com.igetui.api.openservice.igetui.Target target1 = new com.igetui.api.openservice.igetui.Target(); //target1.appId = APPID; //target1.clientId = CLIENTID; // 如需要,可以设置多个接收者 //com.igetui.api.openservice.igetui.Target target2 = new com.igetui.api.openservice.igetui.Target(); //target2.AppId = APPID; //target2.ClientId = "ddf730f6cabfa02ebabf06e0c7fc8da0"; //targetList.Add(target1); //targetList.Add(target2); String contentId = push.getContentId(message); String pushResult = push.pushMessageToList(contentId, targetList); System.Console.WriteLine("-----------------------------------------------"); System.Console.WriteLine("服务端返回结果:" + pushResult); }
/// <summary> /// 给多个用户发送推送(DEMO) /// </summary> private static void PushMessageToList() { IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); ListMessage message = new ListMessage(); /*消息模版: * 1.TransmissionTemplate:透传功能模板 * 2.LinkTemplate:通知打开链接功能模板 * 3.NotificationTemplate:通知透传功能模板 * 4.NotyPopLoadTemplate:通知弹框下载功能模板 */ TransmissionTemplate template = TransmissionTemplateDemo(); //NotificationTemplate template = NotificationTemplateDemo(); //LinkTemplate template = LinkTemplateDemo(); //NotyPopLoadTemplate template = NotyPopLoadTemplateDemo(); template.TransmissionContent = "测试"; message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选 message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选 message.Data = template; //message.PushNetWorkType = 0; //判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为非WIFI环境 //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); com.igetui.api.openservice.igetui.Target target1 = new com.igetui.api.openservice.igetui.Target(); target1.appId = APPID; //target1.clientId = CLIENTID; target1.clientId = CLIENTID; // 如需要,可以设置多个接收者 com.igetui.api.openservice.igetui.Target target2 = new com.igetui.api.openservice.igetui.Target(); target2.appId = APPID; //target2.clientId = "f563cffaba68587e7ff2f23110f6defd"; target2.clientId = CLIENTID; targetList.Add(target1); targetList.Add(target2); String contentId = push.getContentId(message, "ToList_任务组名"); String pushResult = push.pushMessageToList(contentId, targetList); System.Console.WriteLine("-----------------------------------------------"); System.Console.WriteLine("服务端返回结果:" + pushResult); }
//PushMessageToList接口测试代码 public static string PushMessageToList(List <string> cidList, string title, string messageText) { IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); ListMessage message = new ListMessage(); /*消息模版: * 1.TransmissionTemplate:透传功能模板 * 2.LinkTemplate:通知打开链接功能模板 * 3.NotificationTemplate:通知透传功能模板 * 4.NotyPopLoadTemplate:通知弹框下载功能模板 */ //TransmissionTemplate template = TransmissionTemplateDemo(); NotificationTemplate template = NotificationTemplateDemo(title, messageText);; //LinkTemplate template = LinkTemplateDemo(); //NotyPopLoadTemplate template = NotyPopLoadTemplateDemo(); message.IsOffline = false; // 用户当前不在线时,是否离线存储,可选 message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选 message.Data = template; //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); for (int i = 0; i < cidList.Count; i++) { com.igetui.api.openservice.igetui.Target target1 = new com.igetui.api.openservice.igetui.Target(); target1.appId = APPID; target1.clientId = cidList[i]; // 如需要,可以设置多个接收者 //com.igetui.api.openservice.igetui.Target target2 = new com.igetui.api.openservice.igetui.Target(); //target2.AppId = APPID; //target2.ClientId = "ddf730f6cabfa02ebabf06e0c7fc8da0"; targetList.Add(target1); //targetList.Add(target2); } string contentId = push.getContentId(message); string pushResult = push.pushMessageToList(contentId, targetList); //System.Console.WriteLine("-----------------------------------------------"); //System.Console.WriteLine("服务端返回结果:" + pushResult); return(pushResult); }
//PushMessageToList接口测试代码推送 //安卓推送 public static void PushMessageToList(string title, string text, string transmissioncontent, string iconUrl, List <string> pushChannels) { IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); ListMessage message = new ListMessage(); /*消息模版: * 1.TransmissionTemplate:透传功能模板 * 2.LinkTemplate:通知打开链接功能模板 * 3.NotificationTemplate:通知透传功能模板 * 4.NotyPopLoadTemplate:通知弹框下载功能模板 */ NotificationTemplate template = NotificationTemplateDemo(); template.Title = title; template.Text = text; template.Logo = "icon.png"; template.LogoURL = iconUrl; template.TransmissionContent = transmissioncontent; message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选 message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选 message.Data = template; //message.PushNetWorkType = 0; //判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为非WIFI环境 //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); for (int i = 0; i < pushChannels.Count; i++) { string clientId = pushChannels[i]; if (!string.IsNullOrEmpty(clientId)) { // 如需要,可以设置多个接收者 com.igetui.api.openservice.igetui.Target target = new com.igetui.api.openservice.igetui.Target(); target.appId = APPID; target.clientId = clientId; //target1.alias = ALIAS; targetList.Add(target); } } String contentId = push.getContentId(message, "msgpush"); String pushResult = push.pushMessageToList(contentId, targetList); }
/// <summary>发送通知</summary> /// <param name="task">任务信息</param> /// <param name="receiverIds">接收者</param> /// <param name="options">选项</param> public int Send(TaskWorkInfo task, string receiverIds, string options) { JsonData data = JsonMapper.ToObject(options); string payload = data.GetValue("payload", "{}"); string title = data.GetValue("title", task.Tags); string content = data.GetValue("content", task.Title); // 推送消息 IGtPush push = new IGtPush(this.Host, this.AppKey, this.MasterSecret); ListMessage message = new ListMessage(); // 用户当前不在线时,是否离线存储 (可选) message.IsOffline = true; // 离线有效时间,单位为毫秒,可选 message.OfflineExpireTime = 1000 * 3600 * 12; // 判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为不限制网络环境。 message.PushNetWorkType = 0; // 拼装透传内容 string transmissionContent = "{\"title\":\"" + title + "\",\"content\":\"" + content + "\",\"payload\":" + payload + "}"; message.Data = GetTransmissionTemplate(transmissionContent, this.AppId, this.AppKey); IList <string> clientList = MembershipManagement.Instance.AccountBindingService.FindAllBindingObjectIds(receiverIds, "Getui"); // 设置接收者 List <Target> targetList = new List <Target>(); foreach (var item in clientList) { Target target1 = new Target(); target1.appId = this.AppId; target1.clientId = item; targetList.Add(target1); } string contentId = push.getContentId(message); string result = push.pushMessageToList(contentId, targetList); return(0); }
public static void Push(List <string> clientIds, NotificationTemplate template) { IGtPush push = new IGtPush(host, appKey, masterSecret); ListMessage message = new ListMessage() { Data = template }; List <Target> targetList = new List <Target>(); clientIds.ForEach(clientId => targetList.Add(new Target() { appId = appId, clientId = clientId })); string contentId = push.getContentId(message); string pushResult = push.pushMessageToList(contentId, targetList); }
//PushMessageToList接口测试代码 private static void PushMessageToList() { IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); ListMessage message = new ListMessage(); NotificationTemplate template = new NotificationTemplate(); template.AppId = APPID; // 应用APPID template.AppKey = APPKEY; // 应用APPKEY template.Title = "此处填写通知标题"; // 通知标题 template.Text = "此处填写通知内容"; // 通知内容 template.Logo = "icon.png"; // 应用Logo template.LogoURL = "http://www.photophoto.cn/m23/086/010/0860100017.jpg"; //通知栏网络图片展示 template.TransmissionType = "2"; // 收到消息是否立即启动应用,1为立即启动,2则广播等待客户端自启动 template.TransmissionContent = "你需要透传的内容"; // 需要透传的内容 //template.IsRing = true; // 收到通知是否响铃,可选,默认响铃 //template.IsVibrate = true; // 收到通知是否震动,可选,默认振动 //template.IsClearable = true; // 通知是否可清除,可选,默认可清除 message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选 message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选 message.Data = template; //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); com.igetui.api.openservice.igetui.Target target1 = new com.igetui.api.openservice.igetui.Target(); target1.appId = APPID; target1.clientId = CLIENTID; // 如需要,可以设置多个接收者 //com.igetui.api.openservice.igetui.Target target2 = new com.igetui.api.openservice.igetui.Target(); //target2.AppId = APPID; //target2.ClientId = "ddf730f6cabfa02ebabf06e0c7fc8da0"; targetList.Add(target1); //targetList.Add(target2); String contentId = push.getContentId(message); String pushResult = push.pushMessageToList(contentId, targetList); System.Console.WriteLine("-----------PushMessageToList--------------" + pushResult); }
//static void Main() //{ // //toList接口每个用户状态返回是否开启,可选 // Console.OutputEncoding = Encoding.GetEncoding(936); // Environment.SetEnvironmentVariable("needDetails", "true"); // //2.PushMessageToList接口 // PushToList(); //} //PushMessageToList接口测试代码 public static void PushToList(string title, string content, List <string> clientList, bool istz) { // 推送主类(方式1,不可与方式2共存) IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); // 推送主类(方式2,不可与方式1共存)此方式可通过获取服务端地址列表判断最快域名后进行消息推送,每10分钟检查一次最快域名 //IGtPush push = new IGtPush("",APPKEY,MASTERSECRET); ListMessage message = new ListMessage(); //NotificationTemplate template = NotificationTemplateDemo(title, content); if (istz) { NotificationTemplate template = NotificationTemplateDemo(title, content); message.Data = template; } else { TransmissionTemplate template = TransmissionTemplateDemo(title, content); message.Data = template; } // 用户当前不在线时,是否离线存储,可选 message.IsOffline = false; // 离线有效时间,单位为毫秒,可选 message.OfflineExpireTime = 1000 * 3600 * 12; message.PushNetWorkType = 0; //判断是否客户端是否wifi环境下推送,1为在WIFI环境下,0为不限制网络环境。 //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); foreach (var cid in clientList) { com.igetui.api.openservice.igetui.Target target1 = new com.igetui.api.openservice.igetui.Target(); target1.appId = APPID; target1.clientId = cid; //target1.alias = ALIAS1; targetList.Add(target1); } String contentId = push.getContentId(message); String pushResult = push.pushMessageToList(contentId, targetList); System.Console.WriteLine("-----------------------------------------------"); System.Console.WriteLine("服务端返回结果:" + pushResult); }
private static bool PushMsgToList(List <string> clientidlist, ITemplate msgTemplate) { bool result = false; try { IGtPush gtPush = new IGtPush(Push.HOST, Push.APPKEY, Push.MASTERSECRET); ListMessage listMessage = new ListMessage(); listMessage.IsOffline = true; listMessage.OfflineExpireTime = 2073600000L; listMessage.Data = msgTemplate; List <Target> list = new List <Target>(); for (int i = 0; i < clientidlist.Count; i++) { string text = clientidlist[i]; if (!string.IsNullOrEmpty(text)) { Target target = new Target(); target.appId = Push.APPID; target.clientId = text; list.Add(target); } } string contentId = gtPush.getContentId(listMessage, "msgpush"); Push.errorMsg = gtPush.pushMessageToList(contentId, list); JsonData jsonData = MyCommon.JsonStrToObj(Push.errorMsg); string jsonObjValue = MyCommon.getJsonObjValue(jsonData, "result"); if (jsonObjValue.ToLower() == "ok") { result = true; } } catch (Exception ex) { Push.errorMsg += ex.Message; } return(result); }
/// <summary> /// 发送推送[目前仅支持传透和通知,支持Android和IOS] /// </summary> /// <param name="condtion"></param> internal static SendGeTuiPushReplay PushMessage(SendGeTuiPushBySetRequestModel condtion) { SendGeTuiPushReplay result = new SendGeTuiPushReplay(); IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); ListMessage listMessage = new ListMessage() { IsOffline = IsOffline, OfflineExpireTime = OfflineExpireTime, PushNetWorkType = PushNetWorkType }; SingleMessage singleMessage = new SingleMessage() { IsOffline = IsOffline, OfflineExpireTime = OfflineExpireTime, PushNetWorkType = PushNetWorkType }; TransmissionTemplate tt = TransmissionTemplateDemo(); //传透 NotificationTemplate nt = NotificationTemplateDemo(); //通知 if (condtion.sets.Count > 0) { //分离请求中的设备类型 List <GeTuiSetModel> ios = condtion.sets.Where(p => p.deviceType != EnumUserDeviceType.Android).ToList(); List <GeTuiSetModel> android = condtion.sets.Where(p => p.deviceType == EnumUserDeviceType.Android).ToList(); //IOS和安卓分开处理 if (ios.Count > 0) { //IOS设备发送 //IOS需使用传透方式来发送 APNTemplate template = new APNTemplate(); APNPayload apnpayload = new APNPayload(); DictionaryAlertMsg alertMsg = new DictionaryAlertMsg(); alertMsg.Body = condtion.msg; alertMsg.ActionLocKey = ""; alertMsg.LocKey = ""; alertMsg.addLocArg(""); alertMsg.LaunchImage = ""; //IOS8.2支持字段 alertMsg.Title = condtion.title; alertMsg.TitleLocKey = ""; alertMsg.addTitleLocArg(""); apnpayload.AlertMsg = alertMsg; apnpayload.Badge = 1; apnpayload.ContentAvailable = 1; //apnpayload.Category = ""; apnpayload.Sound = "sms-received1.caf"; apnpayload.addCustomMsg("customInfo", condtion.customInfo); template.setAPNInfo(apnpayload); template.AppId = APPID; template.AppKey = APPKEY; if (ios.Count > 1) { //批量 listMessage.Data = template; List <string> devicetokenlist = new List <string>(); foreach (GeTuiSetModel set in ios) { devicetokenlist.Add(set.clientId); } string contentId = push.getAPNContentId(APPID, listMessage); result.sentResultIos = push.pushAPNMessageToList(APPID, contentId, devicetokenlist); } else if (ios.Count == 1) { //单个 singleMessage.Data = template; result.sentResultIos = push.pushAPNMessageToSingle(APPID, ios[0].clientId, singleMessage); } } if (android.Count > 0) { switch (condtion.messageType) { case EnumPushMessagesType.透传消息: tt.TransmissionContent = condtion.msg; listMessage.Data = tt; singleMessage.Data = tt; break; case EnumPushMessagesType.通知: nt.Title = condtion.title; nt.Text = condtion.msg; nt.TransmissionContent = Newtonsoft.Json.JsonConvert.SerializeObject(condtion.customInfo); listMessage.Data = nt; singleMessage.Data = nt; break; } //安卓设备发送 if (android.Count > 1) { //多个用户 List <Target> ts = new List <Target>(); foreach (GeTuiSetModel set in android) { ts.Add(new Target() { appId = APPID, clientId = set.clientId }); } string contentId = push.getContentId(listMessage, "ToList_" + DateTime.Now.ToString("yyyyMMddHHmmss")); result.sentResultAndroid = push.pushMessageToList(contentId, ts); } else if (android.Count == 1) { //单个用户 Target t = new Target(); t.appId = APPID; t.clientId = android[0].clientId; result.sentResultAndroid = push.pushMessageToSingle(singleMessage, t); } } result.ReturnCode = EnumErrorCode.Success; } else { result.ReturnCode = EnumErrorCode.EmptyDate; result.ReturnMessage = "没有设置任何的接收者"; SysManagerService.SysSaveSysLog("推送消息:[" + condtion.msg + "]没有设置任何的接收者", EnumSysLogType.警告); } return(result); }
/// <summary> /// 推送1-n个用户(用户别名) /// </summary> /// <param name="pushMessageInfo">推送信息实体</param> private void PushMessageToList(PushMessageInfo pushMessageInfo) { int isMute = 0;//设定是否静音,只在于推送 客户等于1时可用 IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET); string content = pushMessageInfo.Contents; string title = string.Empty; var transmissionContent = new { Template = pushMessageInfo.Template, Content = pushMessageInfo.Contents, Url = pushMessageInfo.Url, Section = pushMessageInfo.TypeID + "/" + pushMessageInfo.Section, NodeId = pushMessageInfo.DataID }; string jsonContent = JsonHelper.ConvertToJson(transmissionContent); PushLog("- - - - - - - - - - - - - "); PushLog(string.Format("推送类型:{0}", pushMessageInfo.PushType)); PushLog(string.Format("推送内容:{0}", pushMessageInfo.Contents)); PushLog(string.Format("推送目标:{0}", pushMessageInfo.TargetList)); if (pushMessageInfo.TypeID != 0) { title = Enum.GetName(typeof(SectionSecondType), pushMessageInfo.Section); } //设置接收者 List <com.igetui.api.openservice.igetui.Target> targetList = new List <com.igetui.api.openservice.igetui.Target>(); if (pushMessageInfo.TargetList.IndexOf(",") == -1) { pushMessageInfo.TargetList += ","; } string[] targets = pushMessageInfo.TargetList.Split(','); for (int i = 0; i < targets.Length; i++) { if (targets[i] != null && targets[i] != string.Empty && targets[i] != "") { com.igetui.api.openservice.igetui.Target target = new com.igetui.api.openservice.igetui.Target(); target.appId = APPID; target.alias = targets[i]; #region 判定是否允许推送,并向java接口写入推送信息 MessagesAddBLL pushBLL = new MessagesAddBLL(); MessagesAddRequest maRequest = new MessagesAddRequest(); maRequest.creator = "推送程序"; maRequest.userID = Convert.ToInt32(target.alias); maRequest.status = 0; if (pushMessageInfo.Template == 1) { maRequest.contents = pushMessageInfo.Contents; } else { maRequest.contents = pushMessageInfo.Url; } if (pushMessageInfo.TypeID != 0) { maRequest.typeID = pushMessageInfo.TypeID; } if (pushMessageInfo.Section != 0) { maRequest.dataTypeID = pushMessageInfo.Section; } maRequest.dataID = pushMessageInfo.DataID; //写入至未读消息列表 var respon = pushBLL.MessagesAdd(maRequest); //IOS 数据判定开关 if (pushMessageInfo.ChannelID == 1 || pushMessageInfo.ChannelID == 0) { NotifyConfigGetBLL notifyConfigGetBLL = new NotifyConfigGetBLL(); NotifyConfigGetRequest request = new NotifyConfigGetRequest(); request.userID = maRequest.userID; request.userPlatform = 3; NotifyConfigGetResponse ncgResponse = notifyConfigGetBLL.NotityConfigGet(request); //转化为2进制字符串后换算出是否推送 //string allStatus = Convert.ToString(1, 2); string allStatus = Convert.ToString(ncgResponse.notifyConfig.notifySwitch, 2); int t = GetIntegerSomeBit(ncgResponse.notifyConfig.notifySwitch, maRequest.typeID - 1); if (targets.Length == 2) { //静音的二进制返回位数 isMute = GetIntegerSomeBit(ncgResponse.notifyConfig.notifySwitch, 4); } //包含用户已有权限+不存在的用户 if (t == 0) { if (respon.code == 0) { targetList.Add(target); } else { PushLog(string.Format("消息写入失败,无法推送:{0}", maRequest.userID)); } } else { PushLog(string.Format("跳过推送ID:{0}", maRequest.userID)); } } else //Android { if (respon.code == 0) { targetList.Add(target); } else { PushLog(string.Format("消息写入失败,无法推送:{0}", maRequest.userID)); } } #endregion } } if (targetList == null || targetList.Count == 0) { return; } #region 因为IOS端需要静音,透传模板放置在方法底部 ListMessage message = new ListMessage(); //设置透传模板 TransmissionTemplate template = TransmissionTemplateDemo(content, title, jsonContent, isMute); template.TransmissionType = "2"; //应用启动类型,1:强制应用启动 2:等待应用启动 template.TransmissionContent = jsonContent; //透传内容 message.IsOffline = true; message.OfflineExpireTime = 1000 * 3600 * 12; message.Data = template; #endregion string contentId = push.getContentId(message); string pushResult = push.pushMessageToList(contentId, targetList); try { var result = JsonHelper.ConvertToObj <PushResult>(pushResult); PushLog("推送结果:" + result.result); } catch { PushLog("推送结果转换异常"); } }
public PushResult Push(PushParams pushParams) { if (pushParams == null || pushParams.Message == null || pushParams.Targets == null || pushParams.Targets.Count == 0) { throw new Exception("推送参数为空。"); } if (pushParams.Targets.First() == null) { throw new Exception("推送目标为空。"); } //入口参数中的Target都是同一个app类型的推送目标了。 AppPushChannelInfo channelInfo = null; if (EnvProvider.Default.DicAppPushInfo.TryGetValue((AppType)pushParams.Targets.First().AppType, out channelInfo) == false || channelInfo == null) { throw new Exception(string.Format("App类型:{0}对应的推送通道信息为空。", pushParams.Targets.First().AppType)); } try { IGtPush push = new IGtPush(HOST, channelInfo.AppKey, channelInfo.Secret); ListMessage message = new ListMessage(); TransmissionTemplate template = TransmissionTemplateDemo(channelInfo, pushParams.Message); message.IsOffline = true; message.OfflineExpireTime = 1000 * 3600 * 12; message.Data = template; List <Target> targetList = new List <Target>(); for (int i = 0; i < pushParams.Targets.Count; i++) { Target target = new Target(); target.appId = channelInfo.AppId; target.clientId = pushParams.Targets[i].ClientId; targetList.Add(target); } //com.igetui.api.openservice.igetui.Target target1 = new com.igetui.api.openservice.igetui.Target(); //target1.appId = APPID; //target1.clientId = clientId; // 如需要,可以设置多个接收者 //com.igetui.api.openservice.igetui.Target target2 = new com.igetui.api.openservice.igetui.Target(); //target2.appId = APPID; //target2.clientId = "f70befc00249c7337c15ba253e7cc391"; //com.igetui.api.openservice.igetui.Target target3 = new com.igetui.api.openservice.igetui.Target(); //target3.appId = APPID; //target3.clientId = "8a4d45c5a7319237db8493d774befb4c"; //targetList.Add(target1); //targetList.Add(target2); //targetList.Add(target3); String contentId = push.getContentId(message); String pushResult = push.pushMessageToList(contentId, targetList); System.Console.WriteLine("-----------------------------------------------"); System.Console.WriteLine("服务端返回结果:" + pushResult); return(new PushResult() { IsCallPushError = false, ResultMessage = pushResult }); } catch (Exception ex) { throw; } }