using com.igetui.api.openservice;
using com.igetui.api.openservice.igetui;
using com.igetui.api.openservice.igetui.template;
using com.igetui.api.openservice.payload;
using LYFZ.WanYuKeFuData.Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace LYFZ.WanYuKeFu
{
    public class ErpGetuiApiSDK
    {
        public ErpGetuiApiSDK()
        {

        }

#region 生产环境配置
        static string _APPID = "";

        public static string APPID
        {
            get { return ErpGetuiApiSDK._APPID; }
           // set { ErpGetuiApiSDK._APPID = value; }
        }
        static string _APPKEY = "";

        public static string APPKEY
        {
            get { return ErpGetuiApiSDK._APPKEY; }
            //set { ErpGetuiApiSDK._APPKEY = value; }
        }
        static string _AppSecret = "";

        public static string AppSecret
        {
            get { return ErpGetuiApiSDK._AppSecret; }
           // set { ErpGetuiApiSDK._AppSecret = value; }
        }
        static string _MASTERSECRET = "";

        public static string MASTERSECRET
        {
            get { return ErpGetuiApiSDK._MASTERSECRET; }
          //  set { ErpGetuiApiSDK._MASTERSECRET = value; }
        }
        static string _HOST = "";

        public static string HOST
        {
            get { return ErpGetuiApiSDK._HOST; }
           // set { ErpGetuiApiSDK._HOST = value; }
        }
        #endregion
        #region 开发环境配置
        static string _Dev_APPID = "";

        public static string Dev_APPID
        {
            get { return ErpGetuiApiSDK._Dev_APPID; }
        }
        static string _Dev_APPKEY = "";

        public static string Dev_APPKEY
        {
            get { return ErpGetuiApiSDK._Dev_APPKEY; }
        }
        static string _Dev_AppSecret = "";

        public static string Dev_AppSecret
        {
            get { return ErpGetuiApiSDK._Dev_AppSecret; }
        }
        static string _Dev_MASTERSECRET = "";

        public static string Dev_MASTERSECRET
        {
            get { return ErpGetuiApiSDK._Dev_MASTERSECRET; }
        }
        static string _Dev_HOST = "";

        public static string Dev_HOST
        {
            get { return ErpGetuiApiSDK._Dev_HOST; }
        }
        #endregion
        static string _WanYuKFUrl = "";
        public static string WanYuKFUrl
        {
            get { return ErpGetuiApiSDK._WanYuKFUrl; }
        }
        public static void LoadGetuiApiSDKConfig()
        {
            string configString = System.IO.File.ReadAllText(LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath)+"admin\\json\\systemParameter.json",System.Text.Encoding.UTF8);
            dynamic configJson = JsonConvert.DeserializeObject(configString);
            string GetuiAPI = configJson["GetuiAPI"].Value;
            ErpGetuiApiSDK._WanYuKFUrl = configJson["WanYuKFUrl"].Value;

                ErpGetuiApiSDK._Dev_APPID = configJson["DevAPPID"].Value;
                ErpGetuiApiSDK._Dev_APPKEY = configJson["DevAPPKEY"].Value;
                ErpGetuiApiSDK._Dev_AppSecret = configJson["DevAppSecret"].Value;
                ErpGetuiApiSDK._Dev_MASTERSECRET = configJson["DevMASTERSECRET"].Value;
                ErpGetuiApiSDK._Dev_HOST = configJson["DevHOST"].Value;

                ErpGetuiApiSDK._APPID = configJson["APPID"].Value;
                ErpGetuiApiSDK._APPKEY = configJson["APPKEY"].Value;
                ErpGetuiApiSDK._AppSecret = configJson["AppSecret"].Value;
                ErpGetuiApiSDK._MASTERSECRET = configJson["MASTERSECRET"].Value;
                ErpGetuiApiSDK._HOST = configJson["HOST"].Value;

          /*  ErpGetuiApiSDK._APPID = ErpGetuiApiSDK._Dev_APPID;
            ErpGetuiApiSDK._APPKEY = ErpGetuiApiSDK._Dev_APPKEY;
            ErpGetuiApiSDK._AppSecret = ErpGetuiApiSDK._Dev_AppSecret;
            ErpGetuiApiSDK._MASTERSECRET = ErpGetuiApiSDK._Dev_MASTERSECRET;
            ErpGetuiApiSDK._HOST = ErpGetuiApiSDK._Dev_HOST;
            */
            Global.WriteLog(String.Format("Pro ErpGetuiApiSDK._APPID:{0} ErpGetuiApiSDK._APPKEY:{1}  ErpGetuiApiSDK._AppSecret:{2} ErpGetuiApiSDK._MASTERSECRET:{3} ErpGetuiApiSDK._HOST:{4}", ErpGetuiApiSDK._APPID, ErpGetuiApiSDK._APPKEY, ErpGetuiApiSDK._AppSecret, ErpGetuiApiSDK._MASTERSECRET, ErpGetuiApiSDK._HOST), "-1", Global.LogsDongleDomainList);

            Global.WriteLog(String.Format("Dev ErpGetuiApiSDK._APPID:{0} ErpGetuiApiSDK._APPKEY:{1}  ErpGetuiApiSDK._AppSecret:{2} ErpGetuiApiSDK._MASTERSECRET:{3} ErpGetuiApiSDK._HOST:{4}", ErpGetuiApiSDK._Dev_APPID, ErpGetuiApiSDK._Dev_APPKEY, ErpGetuiApiSDK._Dev_AppSecret, ErpGetuiApiSDK._Dev_MASTERSECRET, ErpGetuiApiSDK._Dev_HOST), "-1", Global.LogsDongleDomainList);
        }
        /// <summary>
        /// 批量单推消息
        /// </summary>
        /// <param name="msgRecord"></param>
        /// <param name="msgPushUserDal"></param>
        /// <returns></returns>
        public static string pushMessageToSingleBatchApp(LYFZ.WanYuKeFuData.Model.GTMsgRecord msgRecord, LYFZ.WanYuKeFuData.DAL.GTMessagePushUser msgPushUserDal)
        {
            try
            {
                string retStr = "{\"result\":\"失败\",\"contentId\":\"\"}";
                if (msgRecord.TargetUser == 0)
                {
                    retStr = pushMessageToApp(msgRecord,1);
                    retStr = pushMessageToApp(msgRecord,0);
                }
                else
                {
                    List<PushSingleUser> sUserList = msgPushUserDal.GetPushSingleUserList(msgRecord.TargetUser, msgRecord.TargetList);
                    if (sUserList.Count > 0)
                    {
                        List<string> iosCidList = new List<string>();
                        List<PushSingleUser> proUserList = new List<PushSingleUser>();
                        List<PushSingleUser> devUserList = new List<PushSingleUser>();
                       
                        foreach (PushSingleUser suser in sUserList)
                        {
                            if (suser.GTType == 0)
                            {
                                iosCidList.Add(suser.GTClientID);
                            }
                            Global.WriteLog(String.Format("PushSingleUser suser.GTClientID:{0}  suser.APPState:{1}", suser.GTClientID, suser.APPState), "-1", Global.LogsDongleDomainList);
                            //如果要推送的用户少于等于2个时,使用单推,直接推送
                            if (sUserList.Count <= 2)
                            {
                                if ((msgRecord.Platform.ToLower().Contains("ios") && suser.GTType == 0)
                                || (msgRecord.Platform.ToLower().Contains("android") && suser.GTType == 1))
                                {
                                    retStr = PushMessageToSingle(msgRecord, suser.GTClientID, suser.UserID, suser.Badge, suser.APPState,suser.LYFZAPPID);
                                }
                                // retStr = "{\"result\":\"ok\",\"contentId\":\"\"}";
                            }
                            if ((msgRecord.Platform.ToLower().Contains("ios") && suser.GTType == 0)
                                || (msgRecord.Platform.ToLower().Contains("android") && suser.GTType == 1))
                            {
                                if (suser.APPState == 1)
                                {
                                    proUserList.Add(suser);
                                }
                                else {
                                    devUserList.Add(suser);
                                }
                            }
                        }
                        //如果要推送的用户大于2个时,使用批量单推
                        if (sUserList.Count > 2)
                        {
                            if (proUserList.Count > 0)
                            {
                                retStr = PushMessageToSingleBatch(msgRecord, proUserList, 1, proUserList[0].LYFZAPPID);
                            }
                            if (retStr.ToLower().Contains("result\":\"ok\","))
                            {
                                if (devUserList.Count > 0)
                                {
                                    retStr = PushMessageToSingleBatch(msgRecord, devUserList, 0, proUserList[0].LYFZAPPID);
                                }
                            }
                            // retStr = "{\"result\":\"ok\",\"contentId\":\"\"}";
                        }

                        try
                        {
                            if (retStr.ToLower().Contains("result\":\"ok\","))
                            {
                                msgPushUserDal.AddBadgeNumber(iosCidList.ToArray());
                            }
                        }
                        catch { }


                        iosCidList.Clear();
                    }
                    else
                    {
                        retStr = "{\"result\":\"-900000\",\"contentId\":\"\"}";
                    }
                    sUserList.Clear();
                    sUserList = null;
                }
                return retStr;
            }
            catch (Exception ex)
            {
                return "{\"result\":\"" + ex.Message + "\",\"contentId\":\"\"}";
            }
        }

        /// <summary>
        /// 单推消息
        /// </summary>
        /// <param name="msgRecord"></param>
        /// <param name="_ClientID"></param>
        /// <param name="_Badge"></param>
        /// <returns></returns>
        private static string PushMessageToSingle(LYFZ.WanYuKeFuData.Model.GTMsgRecord msgRecord, string _ClientID,string _userid,int _Badge=0,int appState=1,string lyfzAppid="")
        {
            try
            {
 
                LYFZ.WanYuKeFuData.Model.APPConfig configModel = Global.GetAPPConfig(lyfzAppid,appState);
                if (configModel == null)
                {
                    return "{\"result\":\"没有找到推送APP服务配置信息\",\"contentId\":\"\"}";
                }
                string currentAPPID = configModel.GTAppID;
                string currentAPPKEY = configModel.GTAppKey;
                IGtPush push = new IGtPush(configModel.HostUrl, currentAPPKEY, configModel.GTMasterSecret);
                Global.WriteLog(String.Format("Pro HOST:{0}, APPKEY:{1}, MASTERSECRET:{2} currentAPPID:{3}", configModel.HostUrl, currentAPPKEY, configModel.GTMasterSecret, currentAPPID), "-1", Global.LogsDongleDomainList);
                /*if (appState == 1)
                {
                    currentAPPID = APPID;
                     currentAPPKEY = APPKEY;
                    push = new IGtPush(HOST, APPKEY, MASTERSECRET);
                    Global.WriteLog(String.Format("Pro HOST:{0}, APPKEY:{1}, MASTERSECRET:{2} currentAPPID:{3}", HOST, APPKEY, MASTERSECRET, currentAPPID), "-1", Global.LogsDongleDomainList);
                }
                else {
                    currentAPPID = Dev_APPID;
                    currentAPPKEY = Dev_APPKEY;
                    push = new IGtPush(Dev_HOST, Dev_APPKEY, Dev_MASTERSECRET);
                    Global.WriteLog(String.Format("Dev HOST:{0}, APPKEY:{1}, MASTERSECRET:{2} currentAPPID:{3}", Dev_HOST, Dev_APPKEY, Dev_MASTERSECRET, currentAPPID), "-1", Global.LogsDongleDomainList);
                }*/
                Global.WriteLog(String.Format("IGtPush:{0} ", push.ToString()), "-1", Global.LogsDongleDomainList);
                //消息模版:TransmissionTemplate:透传模板
                TransmissionTemplate template = TransmissionTemplateMsg(msgRecord.Title, msgRecord.Description, msgRecord.MsgData, _userid, msgRecord.ID.ToString(), currentAPPID, currentAPPKEY, _Badge: _Badge + 1);
               // NotificationTemplate template = NotificationTemplateMsg(msgRecord.Title, msgRecord.Description, msgRecord.MsgData, _Badge: _Badge+1);


                // 单推消息模型
                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 = 0;

                com.igetui.api.openservice.igetui.Target target = new com.igetui.api.openservice.igetui.Target();
                target.appId = currentAPPID;
                target.clientId = _ClientID;
                //target.alias = ALIAS;//别名
                String pushResult = "";
                try
                {
                     pushResult = push.pushMessageToSingle(message, target);

                    // System.Console.WriteLine("----------------服务端返回结果:" + pushResult);
                }
                catch (RequestException e)
                {
                    String requestId = e.RequestId;
                    //发送失败后的重发
                     pushResult = push.pushMessageToSingle(message, target, requestId);
                    //System.Console.WriteLine("----------------服务端返回结果:" + pushResult);
                }
                //{"result":"ok","contentId":"OSA-0930_h5nst6murS6Qc5OAPVwnz2"}
                Global.WriteLog(String.Format("pushResult:{0} ", pushResult), "-1", Global.LogsDongleDomainList);
                return pushResult;
            }
            catch (Exception ex){
                Global.WriteLog(String.Format("Exception:{0} ", ex.Message), "-1", Global.LogsDongleDomainList);
              return "{\"result\":\""+ex.Message+"\",\"contentId\":\"\"}";
            }
        }
        /// <summary>
        /// 批量单推消息
        /// </summary>
        /// <param name="msgRecord"></param>
        /// <param name="_ClientIDList"></param>
        /// <returns></returns>
        public static string PushMessageToSingleBatch(LYFZ.WanYuKeFuData.Model.GTMsgRecord msgRecord, List<PushSingleUser> _ClientIDList,int appState=1,string lyfzAppid="")
        {
            try
            {

                LYFZ.WanYuKeFuData.Model.APPConfig configModel = Global.GetAPPConfig(lyfzAppid, appState);
                if (configModel == null)
                {
                    return "{\"result\":\"没有找到推送APP服务配置信息\",\"contentId\":\"\"}";
                }
                string currentAPPID = configModel.GTAppID;
                string currentAPPKEY = configModel.GTAppKey;
                IGtPush push = new IGtPush(configModel.HostUrl, currentAPPKEY, configModel.GTMasterSecret);
                IBatch batch = new BatchImpl(currentAPPKEY, push);
                Global.WriteLog(String.Format("Pro HOST:{0}, APPKEY:{1}, MASTERSECRET:{2} currentAPPID:{3}", configModel.HostUrl, currentAPPKEY, configModel.GTMasterSecret, currentAPPID), "-1", Global.LogsDongleDomainList);


               /* if (appState == 1)
                {
                    currentAPPID = APPID;
                    currentAPPKEY = APPKEY;
                    push = new IGtPush(HOST, APPKEY, MASTERSECRET);
                    batch = new BatchImpl(APPKEY, push);
                    Global.WriteLog(String.Format("Pro HOST:{0}, APPKEY:{1}, MASTERSECRET:{2} currentAPPID:{3}", HOST, APPKEY, MASTERSECRET, currentAPPID), "-1", Global.LogsDongleDomainList);
                }
                else {
                    currentAPPID = Dev_APPID;
                    currentAPPKEY = Dev_APPKEY;
                    push = new IGtPush(Dev_HOST, Dev_APPKEY, Dev_MASTERSECRET);
                    batch = new BatchImpl(Dev_APPKEY, push);
                    Global.WriteLog(String.Format("Dev HOST:{0}, APPKEY:{1}, MASTERSECRET:{2} currentAPPID:{3}", Dev_HOST, Dev_APPKEY, Dev_MASTERSECRET, currentAPPID), "-1", Global.LogsDongleDomainList);

                }*/

                int targetCount = 0;
                foreach (PushSingleUser cidItem in _ClientIDList)
                {
                    if (cidItem.APPState == appState)
                    {
                        //IOS,Android
                        if ((msgRecord.Platform.ToLower().Contains("ios") && cidItem.GTType == 0)
                            || (msgRecord.Platform.ToLower().Contains("android") && cidItem.GTType == 1))
                        {
                            //消息模版:TransmissionTemplate:透传模板
                            TransmissionTemplate template = TransmissionTemplateMsg(msgRecord.Title, msgRecord.Description, msgRecord.MsgData, cidItem.UserID, msgRecord.ID.ToString(), currentAPPID,currentAPPKEY, _Badge: cidItem.Badge + 1);
                            // NotificationTemplate template = NotificationTemplateMsg(msgRecord.Title, msgRecord.Description, msgRecord.MsgData, _Badge: cidItem.Badge+1);

                            // 单推消息模型
                            SingleMessage messageTrans = new SingleMessage();
                            messageTrans.IsOffline = true;                         // 用户当前不在线时,是否离线存储,可选
                            messageTrans.OfflineExpireTime = 1000 * 3600 * 12;            // 离线有效时间,单位为毫秒,可选
                            messageTrans.Data = template;
                            //判断是否客户端是否wifi环境下推送,2为4G/3G/2G,1为在WIFI环境下,0为不限制环境
                            messageTrans.PushNetWorkType = 0;

                            com.igetui.api.openservice.igetui.Target targetTrans = new com.igetui.api.openservice.igetui.Target();
                            targetTrans.appId = currentAPPID;
                            targetTrans.clientId = cidItem.GTClientID;
                            targetCount++;
                            batch.add(messageTrans, targetTrans);
                        }
                    }
                }
                //{"result":"ok","info":{"0":{"result":"ok","taskId":"OSS-0930_if8pCKldBb9H0sGxnZTss4","cid":"50cbe6d6082e32a0c829f55fb13c9a5c","status":"successed_offline"},"1":{"result":"ok","taskId":"OSS-0930_BNvR2QGEbl8GJ7AN463dh5","cid":"92254c4b43b01d4e99fa5a77cde4ed36","status":"successed_offline"}}}
                
                if (targetCount > 0)
                {
                    try
                    {
                        return batch.submit();
                    }
                    catch //(Exception e)
                    {
                        return batch.retry();
                    }
                }
                else {
                    return "{\"result\":\"没有要发送的客户端\",\"contentId\":\"\"}";
                }
            }
            catch (Exception ex)
            {
                return "{\"result\":\"" + ex.Message + "  appState:"+ appState.ToString() + "\",\"contentId\":\"\"}";
            }
        }
        /// <summary>
        /// 向所有用户推送消息
        /// </summary>
        /// <param name="msgRecord"></param>
        private static string pushMessageToApp(LYFZ.WanYuKeFuData.Model.GTMsgRecord msgRecord, int appState = 1)
        {
            try
            {
                IGtPush push = null;
                string currentAPPID = "";
                string currentAPPKEY = "";
                if (appState == 1)
                {
                    currentAPPID = APPID;
                    currentAPPKEY = APPKEY;
                    push = new IGtPush(HOST, APPKEY, MASTERSECRET);
                }
                else {
                    currentAPPID = Dev_APPID;
                    currentAPPKEY = Dev_APPKEY;
                    push = new IGtPush(Dev_HOST, Dev_APPKEY, Dev_MASTERSECRET);
                }
                // 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒)
                AppMessage message = new AppMessage();

                TransmissionTemplate template = TransmissionTemplateMsg(msgRecord.Title, msgRecord.Description, msgRecord.MsgData, "", msgRecord.ID.ToString(), currentAPPID, currentAPPKEY, _Badge: 1);
                //TransmissionTemplateDemo();
                 //NotificationTemplate template = NotificationTemplateMsg(msgRecord.Title, msgRecord.Description, msgRecord.MsgData);

                message.IsOffline = true;                         // 用户当前不在线时,是否离线存储,可选
                message.OfflineExpireTime = 1000 * 3600 * 12;     // 离线有效时间,单位为毫秒,可选
                message.Data = template;
                //判断是否客户端是否wifi环境下推送,2:4G/3G/2G,1为在WIFI环境下,0为无限制环境
                message.PushNetWorkType = 0;
                //message.Speed = 1000;

                List<String> appIdList = new List<String>();
                appIdList.Add(currentAPPID);

                List<String> phoneTypeList = new List<String>();   //通知接收者的手机操作系统类型
                phoneTypeList.Add("ANDROID");
                phoneTypeList.Add("IOS");

                List<String> provinceList = new List<String>();    //通知接收者所在省份
                //provinceList.Add("浙江");
                //provinceList.Add("上海");
                //provinceList.Add("北京");

                List<String> tagList = new List<string>();
                //tagList.Add("中文");

                message.AppIdList = appIdList;
                message.PhoneTypeList = phoneTypeList;
                //message.ProvinceList = provinceList;
                // message.TagList = tagList;


                String pushResult = push.pushMessageToApp(message);
                return pushResult;
            }
            catch (Exception ex)
            {
                return "{\"result\":\"" + ex.Message + "\",\"contentId\":\"\"}";
            }
           // System.Console.WriteLine("-----------------------------------------------");
          //  System.Console.WriteLine("服务端返回结果:" + pushResult);
        }
        

        /*
        * 
        * 所有推送接口均支持四个消息模板,依次为透传模板,通知透传模板,通知链接模板,通知弹框下载模板
        * 注:IOS离线推送需通过APN进行转发,需填写pushInfo字段,目前仅不支持通知弹框下载功能
        *
        */

        static string GetMsgContent(string content)
        {
            string retContent = "";
            if (content.ToLower().IndexOf("http://") == 0
                || content.ToLower().IndexOf("https://") == 0)
            {
                retContent = JsonConvert.SerializeObject(new { JumpURL = content });
            }
            else
            {
                retContent = content;
            }
            return retContent;
        }

        /// <summary>
        /// 透传模板动作内容
        /// </summary>
        /// <param name="_title"></param>
        /// <param name="_description"></param>
        /// <param name="_Content"></param>
        /// <param name="_Badge"></param>
        /// <returns></returns>
        public static TransmissionTemplate TransmissionTemplateMsg(string _title, string _description, string _Content, string _userid,string _msgid,string tAppid,string tAppkey,int _Badge = 0)
        {
            string sendMsgContent = "";
            string tempMsgString = GetMsgContent(_Content);
            dynamic smgObj = new
            {
                msgid=_msgid,
                title = _title,
                description = _description,
                content = _Content.IndexOf("{\"") == 0 ? JsonConvert.DeserializeObject(_Content) : tempMsgString.IndexOf("{\"") == 0 ? JsonConvert.DeserializeObject(tempMsgString) : tempMsgString,
                sendTime=DateTime.Now.ToYYYY_MM_dd_HH_mm_ss(),
                badge = _Badge
            };
            sendMsgContent = JsonConvert.SerializeObject(smgObj);
            TransmissionTemplate template = new TransmissionTemplate();
            template.AppId = tAppid;
            template.AppKey = tAppkey;
            template.TransmissionType = "2";            //应用启动类型,1:强制应用启动 2:等待应用启动
            template.TransmissionContent = sendMsgContent;  //透传内容
           
            // template.setPushInfo("",8, "加上了安卓消息 我是来至于C#的测试消息", "default", "my C# no","","","");
            //APN高级推送
            APNPayload apnpayload = new APNPayload();
            DictionaryAlertMsg alertMsg = new DictionaryAlertMsg();
            alertMsg.Body = _description;

            //iOS8.2支持字段
            alertMsg.Title = _title;

            apnpayload.AlertMsg = alertMsg;
            if (_Badge > 0)
            {
                apnpayload.Badge = _Badge;
            }
            apnpayload.ContentAvailable = 1;
            //apnpayload.Category = "";
            apnpayload.Sound = "default";
            apnpayload.addCustomMsg("payload", sendMsgContent);

            template.setAPNInfo(apnpayload);

            //设置客户端展示时间
            //String begin = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            // String end = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-dd HH:mm:ss");
            // template.setDuration(begin, end);

            return template;
        }
        /// <summary>
        /// 通知透传模板动作内容
        /// </summary>
        /// <param name="_title">标题</param>
        /// <param name="_description">描述</param>
        /// <param name="_Content">内容</param>
        /// <param name="_TransmissionType">应用启动类型,1:强制应用启动  2:等待应用启动</param>
        /// <param name="_Badge">消息数 IOS 传用</param>
        /// <param name="_Logo">通知栏显示图标</param>
        /// <returns></returns>
       /* public static NotificationTemplate NotificationTemplateMsg(string _title, string _description, string _Content, string _TransmissionType="2", int _Badge = 0, string _Logo = "")
        {
            NotificationTemplate template = new NotificationTemplate();
            
            template.AppId = APPID;
            template.AppKey = APPKEY;
            //通知栏标题
            template.Title = _title;
            //通知栏内容     
            template.Text = _description;
            if (_Logo.Contains("https://") || _Logo.Contains("http://"))
            {
                //通知栏显示网络图标
                template.LogoURL = _Logo.Trim();
            }
            else {
                //通知栏显示本地图片
                template.Logo = _Logo.Trim();
            }
            //通知栏显示本地图片
           // template.Logo = _Logo;
            //通知栏显示网络图标
           // template.LogoURL = "";
            //应用启动类型,1:强制应用启动  2:等待应用启动
            template.TransmissionType = "2";
            //透传内容  
            template.TransmissionContent = _Content;
            //接收到消息是否响铃,true:响铃 false:不响铃   
            template.IsRing = true;
            //接收到消息是否震动,true:震动 false:不震动   
            template.IsVibrate = true;
            //接收到消息是否可清除,true:可清除 false:不可清除    
            template.IsClearable = true;
            

            //APN高级推送
            APNPayload apnpayload = new APNPayload();
            DictionaryAlertMsg alertMsg = new DictionaryAlertMsg();
            alertMsg.Body = _description;

            //iOS8.2支持字段
            alertMsg.Title = _title;

            apnpayload.AlertMsg = alertMsg;
            if (_Badge > 0)
            {
                apnpayload.Badge = _Badge;
            }
            apnpayload.ContentAvailable = 1;
            //apnpayload.Category = "";
            apnpayload.Sound = "default";
            apnpayload.addCustomMsg("payload", _Content);
            
            template.setAPNInfo(apnpayload);



            //设置通知定时展示时间,结束时间与开始时间相差需大于6分钟,消息推送后,客户端将在指定时间差内展示消息(误差6分钟)
            //String begin = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
           // String end = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-dd HH:mm:ss");
           // template.setDuration(begin, end);

            return template;
        }*/
        
    }

   
}