Exemple #1
0
        /// <summary>
        /// 16.公司OA平台发出的消息(杨立旭)
        /// </summary>
        /// <param name="touid"></param>
        /// <param name="deviceToken"></param>
        /// <param name="count"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public static async Task PushOANotice(string touid, string deviceToken, int count, MessageModel model)
        {
            LoggerHelper.IOSPush($"0.OA通知消息 IOS离线推送,开始给[{touid}]推送消息{Environment.NewLine},devicetoken={deviceToken}");


            var messageJson = JsonConvert.SerializeObject(model);

            var deviceMsg = new DeviceMsg();

            deviceMsg.id          = Guid.NewGuid().ToString();
            deviceMsg.msgtime     = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            deviceMsg.msgtype     = 16;
            deviceMsg.msgcount    = count;
            deviceMsg.devicetoken = deviceToken;
            deviceMsg.uid         = touid;
            deviceMsg.msgcontent  = messageJson;

            deviceMsg.title = "待办任务";//model.SchemeTypeName;
            deviceMsg.body  = model.Content;



            var deviceMsgJson = JsonConvert.SerializeObject(deviceMsg);

            LoggerHelper.IOSPush($"1.OA通知消息 IOS离线推送,给[{touid}]推送的消息内容为:{Environment.NewLine}{deviceMsgJson}");
            ApnsPushOne(deviceMsg);
        }
Exemple #2
0
        /// <summary>
        /// 3 群组公告
        /// </summary>
        /// <param name="touid"></param>
        /// <param name="deviceToken"></param>
        /// <param name="count"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static async Task PushGroupNotice(string touid, string deviceToken, int count, string msg)
        {
            LoggerHelper.IOSPush($"0.群组公告,IOS离线推送,开始给[{touid}]推送消息{Environment.NewLine},devicetoken={deviceToken}");


            var model = JsonConvert.DeserializeObject <AppGroupNotice>(msg);

            var deviceMsg = new DeviceMsg();

            deviceMsg.id          = Guid.NewGuid().ToString();
            deviceMsg.msgtime     = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            deviceMsg.msgtype     = 3;
            deviceMsg.msgcount    = count;
            deviceMsg.devicetoken = deviceToken;
            deviceMsg.uid         = touid;
            deviceMsg.msgcontent  = msg;

            deviceMsg.title = "群组公告";
            deviceMsg.body  = model.Title;



            var deviceMsgJson = JsonConvert.SerializeObject(deviceMsg);

            LoggerHelper.IOSPush($"1.群组公告, IOS离线推送,给[{touid}]推送的消息内容为:{Environment.NewLine}{deviceMsgJson}");
            ApnsPushOne(deviceMsg);
        }
Exemple #3
0
        /// <summary>
        /// 1.聊天消息 IOS离线推送
        /// </summary>
        /// <param name="touid"></param>
        /// <param name="deviceToken"></param>
        /// <param name="count"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static async Task PushMessageToSingle(string touid, string deviceToken, int count, Msg msg)
        {
            LoggerHelper.IOSPush($"0.聊天消息 IOS离线推送,开始给[{touid}]推送消息{Environment.NewLine},devicetoken={deviceToken}");


            var messageJson = JsonConvert.SerializeObject(msg);

            var deviceMsg = new DeviceMsg();

            deviceMsg.id          = Guid.NewGuid().ToString();
            deviceMsg.msgtime     = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            deviceMsg.msgtype     = 1;
            deviceMsg.msgcount    = count;
            deviceMsg.devicetoken = deviceToken;
            deviceMsg.uid         = touid;
            deviceMsg.msgcontent  = messageJson;

            deviceMsg.title = msg.fromrealname;

            var fromPersonName = "";
            var content        = "";

            //群组消息
            if (msg.isgroup == 1)
            {
                deviceMsg.title = msg.torealname;
                fromPersonName  = msg.fromrealname + ":";
            }
            content = fromPersonName + msg.msg;
            if (msg.msgtype == 1)
            {
                content = fromPersonName + "[图片]";
            }
            else if (msg.msgtype == 2)
            {
                content = fromPersonName + "[文件]";
            }
            else if (msg.msgtype == 4)
            {
                content = fromPersonName + "[语音]";
            }
            else if (msg.msgtype == 5)
            {
                content = fromPersonName + "[地图签到]";
            }
            else if (msg.msgtype == 3)
            {
                content = fromPersonName + "[图片]";
            }

            deviceMsg.body = content;
            var deviceMsgJson = JsonConvert.SerializeObject(deviceMsg);

            LoggerHelper.IOSPush($"1.聊天消息 IOS离线推送,给[{touid}]推送的消息内容为:{Environment.NewLine}{deviceMsgJson}");
            ApnsPushOne(deviceMsg);
        }
Exemple #4
0
        public static async Task ApnsPushOne(DeviceMsg device)
        {
            var dataService        = new DataService();
            var apnsServer         = ConfigHelper.GetConfigString("ApnsServer");
            var certificateFile    = ConfigHelper.GetConfigString("ApnspCertificateFile");
            var certificateFilePwd = ConfigHelper.GetConfigString("ApnsCertificateFilePwd");
            var server             = ApnsConfiguration.ApnsServerEnvironment.Sandbox;//0

            if (apnsServer == "1")
            {
                server = ApnsConfiguration.ApnsServerEnvironment.Production;
            }
            var config = new ApnsConfiguration(server, certificateFile, certificateFilePwd);
            // Create a new broker
            var apnsBroker = new ApnsServiceBroker(config);

            // Wire up events
            apnsBroker.OnNotificationFailed += (notification, aggregateEx) =>
            {
                aggregateEx.Handle(ex =>
                {
                    if (ex is ApnsNotificationException)
                    {
                        var notificationException = ex as ApnsNotificationException;
                        var apnsNotification      = notificationException.Notification;
                        var statusCode            = notificationException.ErrorStatusCode;
                        LoggerHelper.IOSPush($"3.Apple Notification Failed!{Environment.NewLine}ID={apnsNotification.Identifier}{Environment.NewLine} Code={statusCode}{Environment.NewLine}Uid={device.uid}{Environment.NewLine}DeviceToken={notification.DeviceToken}{Environment.NewLine}deviceMsgId={device.id}");
                        //Console.WriteLine($"Apple Notification Failed: ID={apnsNotification.Identifier}, Code={statusCode}");
                    }
                    else
                    {
                        LoggerHelper.IOSPush($"4.Apple Notification Failed for some unknown reason : {ex.InnerException}{Environment.NewLine}deviceMsgId={device.id}");
                    }
                    return(true);
                });
            };

            apnsBroker.OnNotificationSucceeded += (notification) => {
                //LoggerHelper.IOSPush($"Apple Notification Sent!, Uid={device.uid},DeviceToken=" + notification.DeviceToken);
                //发送成功后,需要将msgcount 加1
                var b = dataService.UpdateUserDeviceTokenMsgcount(notification.DeviceToken);

                LoggerHelper.IOSPush($"2.给【{device.uid}】推送的【{device.id}】消息返回结果为:{b}");
            };
            // Start the broker
            apnsBroker.Start();
            apnsBroker.QueueNotification(new ApnsNotification
            {
                DeviceToken = device.devicetoken,
                //Payload = JObject.Parse("{\"aps\":{\"alert\":\"" + device.title + "\",\"badge\":" + device.msgcount + ",\"sound\":\"default\"},\"type\":" + device.msgtype + ",\"content\":" + device.msgcontent + ",\"createdate\":\"" + device.msgtime + "\"}"),
                //将alert分为title和body字段
                Payload = JObject.Parse("{\"aps\":{\"alert\":{\"title\":\"" + device.title + "\",\"body\" : \"" + device.body + "\"},\"badge\":" + device.msgcount + ",\"sound\":\"default\"},\"type\":" + device.msgtype + ",\"content\":" + device.msgcontent + ",\"createdate\":\"" + device.msgtime + "\"}")
            });
            apnsBroker.Stop();
        }
Exemple #5
0
        /// <summary>
        /// 15  -->>   自建群编辑通知(刘静杰)
        /// </summary>
        /// <param name="touid"></param>
        /// <param name="deviceToken"></param>
        /// <param name="count"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public static async Task PushSelfGroupNoticeMore(string touid, string deviceToken, int count, SelfGroupNoticeMore model)
        {
            var messageJson = JsonConvert.SerializeObject(model);

            LoggerHelper.IOSPush($"0.自建群编辑通知,IOS离线推送,开始给[{touid}]推送消息{Environment.NewLine},devicetoken={deviceToken}");
            var deviceMsg = new DeviceMsg();

            deviceMsg.id          = Guid.NewGuid().ToString();
            deviceMsg.msgtime     = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            deviceMsg.msgtype     = 2;
            deviceMsg.msgcount    = count;
            deviceMsg.devicetoken = deviceToken;
            deviceMsg.uid         = touid;
            deviceMsg.msgcontent  = messageJson;

            deviceMsg.title = model.groupname;
            deviceMsg.body  = "新的群组动态";
            if (model.type == 0)
            {
                deviceMsg.body = model.membername + "新加入群组";
            }
            else if (model.type == 1)
            {
                deviceMsg.body = model.membername + "已被移出群组";
            }
            else if (model.type == 2)
            {
                deviceMsg.body = model.membername + "退出群组";
            }
            else if (model.type == 3)
            {
                deviceMsg.body = "群组已经被解散";
            }
            else if (model.type == 4)
            {
                deviceMsg.body = "修改群组信息动态";
            }
            var deviceMsgJson = JsonConvert.SerializeObject(deviceMsg);

            LoggerHelper.IOSPush($"1.自建群编辑通知, IOS离线推送,给[{touid}]推送的消息内容为:{Environment.NewLine}{deviceMsgJson}");
            ApnsPushOne(deviceMsg);
        }