Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
    //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);
    }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        //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);
        }
Esempio n. 6
0
        //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);
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 9
0
        //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);
        }
Esempio n. 10
0
        //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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
        /// <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("推送结果转换异常");
            }
        }
Esempio n. 14
0
        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;
            }
        }