using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Web;
|
using com.igetui.api.openservice;
|
using System.Threading.Tasks;
|
using System.Data;
|
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json;
|
using com.igetui.api.openservice.igetui.template;
|
using com.igetui.api.openservice.igetui;
|
|
namespace WebAPI.Service
|
{
|
public static class GeTuiService
|
{
|
//http的域名
|
// private static String HOST = "http://sdk.open.api.igexin.com/apiex.htm";
|
|
//https的域名
|
private static String HOST = "https://api.getui.com/apiex.htm";
|
|
// 配置为DCLOUD 中的 unipush 个推 中对应的数据
|
private static String APPID = "X3I10VqaROAH8C7ElIc1L5";
|
private static String APPKEY = "V425beWn5K65BcOYKTcXx8";
|
private static String MASTERSECRET = "LOXAgRbXS98NxHKUXmlJQ";
|
|
// 推送服务实例
|
private static IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET);
|
|
// 单条消息推送
|
public static void PubishSingle(int HInterID)
|
{
|
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
|
DataSet ds = new DataSet();
|
|
try
|
{
|
JObject NameMsgKVP = new JObject();
|
ds = oCN.RunProcReturn($@"
|
select * from h_v_OA_WorkLinkBillAllList where hmainid = {HInterID}
|
select * from Gy_UserClientIdRelation
|
", "h_v_OA_WorkLinkBillAllList");
|
NotificationTemplate template = null;
|
if(ds.Tables[0].Rows.Count > 0)
|
{
|
string title = ds.Tables[0].Rows[0]["主题"].ToString();
|
string content = ds.Tables[0].Rows[0]["内容"].ToString();
|
template = GetNotificationTemplate(title, content, "/pages/ZLGL/OA_WorkLink/OA_WorkLinkBillList", "0");
|
|
// 广播
|
if(ds.Tables[0].Rows[0]["发送类型"].ToString() == "公共")
|
{
|
// 遍历 全推送
|
foreach(DataRow row in ds.Tables[1].Rows)
|
{
|
PushMessageToSingle(template, row["HClientID"].ToString());
|
}
|
}else // 单独推送
|
{
|
// 推送给接收人 和 抄送人
|
foreach (DataRow row in ds.Tables[1].Rows)
|
{
|
if(ds.Tables[0].Rows[0]["接收人"].ToString() == row["HUserName"].ToString()
|
|| ds.Tables[0].Rows[0]["抄送接收人"].ToString() == row["HUserName"].ToString())
|
PushMessageToSingle(template, row["HClientID"].ToString());
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LogService.Write(ex.ToString());
|
return;
|
}
|
}
|
|
// 单推 使用通知消息模型
|
private static void PushMessageToSingle(NotificationTemplate template, string ClientID)
|
{
|
|
IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET);
|
|
// 单推消息模型
|
SingleMessage message = new SingleMessage();
|
message.IsOffline = true; // 用户当前不在线时,是否离线存储,可选
|
message.OfflineExpireTime = 1000 * 3600 * 12; // 离线有效时间,单位为毫秒,可选
|
message.Data = template;
|
//判断是否客户端是否wifi环境下推送,2为4G/3G/2G,1为在WIFI环境下,0为不限制环境
|
//message.PushNetWorkType = 1;
|
|
com.igetui.api.openservice.igetui.Target target = new com.igetui.api.openservice.igetui.Target();
|
target.appId = APPID;
|
target.clientId = ClientID;
|
//target.alias = ALIAS;
|
try
|
{
|
String pushResult = push.pushMessageToSingle(message, target);
|
|
LogService.Write("-----------------------------------------------");
|
LogService.Write("-----------------------------------------------");
|
LogService.Write("----------------服务端返回结果:" + pushResult);
|
}
|
catch (RequestException e)
|
{
|
String requestId = e.RequestId;
|
//发送失败后的重发
|
String pushResult = push.pushMessageToSingle(message, target, requestId);
|
LogService.Write("-----------------------------------------------");
|
LogService.Write("-----------------------------------------------");
|
LogService.Write("----------------服务端返回结果:" + pushResult);
|
}
|
}
|
|
//透传模板动作内容
|
public static TransmissionTemplate TransmissionTemplateDemo()
|
{
|
TransmissionTemplate template = new TransmissionTemplate();
|
template.AppId = APPID;
|
template.AppKey = APPKEY;
|
//应用启动类型,1:强制应用启动 2:等待应用启动
|
template.TransmissionType = 1;
|
//透传内容
|
template.TransmissionContent = "透传内容";
|
//设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)
|
// String begin = "2015-03-06 14:36:10";
|
// String end = "2015-03-06 14:46:20";
|
// template.setDuration(begin, end);
|
|
return template;
|
}
|
|
//通知透传模板动作内容
|
public static NotificationTemplate GetNotificationTemplate(string title, string content, string pagePath, string HItemID)
|
{
|
NotificationTemplate template = new NotificationTemplate();
|
template.AppId = APPID;
|
template.AppKey = APPKEY;
|
//通知栏标题
|
template.Title = title;
|
//通知栏内容
|
template.Text = content;
|
//通知栏显示本地图片
|
template.Logo = "@/static/logo.png";
|
//通知栏显示网络图标
|
template.LogoURL = "";
|
//应用启动类型,1:强制应用启动 2:等待应用启动
|
template.TransmissionType = 1;
|
//透传内容
|
template.TransmissionContent = "";
|
//接收到消息是否响铃,true:响铃 false:不响铃
|
template.IsRing = true;
|
//接收到消息是否震动,true:震动 false:不震动
|
template.IsVibrate = true;
|
//接收到消息是否可清除,true:可清除 false:不可清除
|
template.IsClearable = true;
|
var customData = new Dictionary<string, string>
|
{
|
{"pagePath", pagePath}, // 示例:"/pages/detail/detail"
|
{"itemId", HItemID} // 示例:"123456"
|
};
|
template.TransmissionContent = JsonConvert.SerializeObject(customData); // 序列化为 JSON 字符串
|
template.TransmissionType = 1; // 1=点击通知后触发客户端回调(透传内容给客户端)
|
//设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)
|
// String begin = "2015-03-06 14:36:10";
|
// String end = "2015-03-06 14:46:20";
|
// template.setDuration(begin, end);
|
|
return template;
|
}
|
}
|
}
|