コード例 #1
0
        /// <summary>
        /// 推送消息给所有APP端
        /// </summary>
        /// <param name="request">request.PushMsg</param>
        /// <returns></returns>
        public SnsResponse JpushSendToAll(SnsRequest request)
        {
            PushPayload pushPayload = GetPushPayload(request);

            //写记录
            System.Threading.Tasks.Task.Run(() =>
            {
                JpushLog _model   = new JpushLog();
                _model.CreateTime = DateTime.Now;
                _model.PushId     = request.UserId;
                _model.IsToAll    = 1;
                _model.BePushId   = request.PushUsers;
                _model.PushMsg    = request.PushMsg;
                if (request.PushExtras != null)
                {
                    _model.ParamString = request.PushExtras.ToString();
                }
                _jpushLog.Insert(_model);
            });

            var         result   = JPushClient.SendPush(pushPayload);
            SnsResponse response = new SnsResponse();

            response.JpushMsgId = result.msg_id;
            return(response);
        }
コード例 #2
0
        /// <summary>
        /// 检测某条消息是否推送成功
        /// </summary>
        /// <param name="request">request.PushMsgId</param>
        /// <returns></returns>
        public SnsResponse JpushSendCheck(SnsRequest request)
        {
            SnsResponse response = new SnsResponse();

            try
            {
                //如需查询上次推送结果执行下面的代码
                //var apiResult = _client.getReceivedApi(result.msg_id.ToString());
                //var apiResultv3 = _client.getReceivedApi_v3(result.msg_id.ToString());
                //如需查询某个messageid的推送结果执行下面的代码
                var querResultWithV3 = _client.getReceivedApi_v3(request.PushMsgId);
            }
            catch (APIRequestException e)
            {
                //response.Message.Result = MessageResult.FAILED;
                //response.Message.Content = string.Format("Http Status:{0} Error Message:{1}", e.Status, e.ErrorMessage);
                //response.Message.MessageCode = e.ErrorCode.ToString();
                //response.Message.MessageID = request.PushMsgId;
            }
            catch (APIConnectionException e)
            {
                //response.Message.Result = MessageResult.FAILED;
                //response.Message.Content = string.Format("APIConnectionException Error Message:{0}", e.Message);
                //response.Message.MessageID = request.PushMsgId;
            }

            return(response);
        }
コード例 #3
0
        /// <summary>
        /// 推送消息给特定标签用户
        /// </summary>
        /// <param name="request">request.PushUsers 以,分隔的多个标签</param>
        /// <returns></returns>
        public SnsResponse JpushSendToTag(SnsRequest request)
        {
            JpushLog _model = new JpushLog();

            _model.CreateTime = DateTime.Now;
            _model.PushId     = request.UserId;
            _model.IsToAll    = 0;
            _model.BePushId   = request.PushUsers;
            _model.PushMsg    = request.PushMsg;
            if (request.PushExtras != null)
            {
                _model.ParamString = request.PushExtras.ToString();
            }
            _jpushLog.Insert(_model);

            PushPayload pushPayload = GetPushPayload(request);
            var         userlist    = request.PushUsers.Split(',');

            pushPayload.audience = Audience.s_tag(userlist);

            var         result   = JPushClient.SendPush(pushPayload);
            SnsResponse response = new SnsResponse();

            response.JpushMsgId = result.msg_id;
            return(response);
        }
コード例 #4
0
        /// <summary>
        /// 推送消息给别名用户
        /// </summary>
        /// <param name="request">request.PushUsers 以,分隔的多个别名</param>
        /// <returns></returns>
        public SnsResponse JpushSendToAlias(SnsRequest request)
        {
            PushPayload pushPayload = GetPushPayload(request);
            var         userlist    = request.PushUsers.Split(',');

            //写记录
            System.Threading.Tasks.Task.Run(() =>
            {
                JpushLog _model   = new JpushLog();
                _model.CreateTime = DateTime.Now;
                _model.PushId     = request.UserId;
                _model.IsToAll    = 0;
                _model.BePushId   = request.PushUsers;
                _model.PushMsg    = request.PushMsg;
                if (request.PushExtras != null)
                {
                    _model.ParamString = request.PushExtras.ToString();
                }
                _jpushLog.Insert(_model);
            });

            SnsResponse response = new SnsResponse();


            int splitSize = _defaultPushGroupSize;                             //分割的块大小

            Object[] subAry = StringToolsHelper.splitAry(userlist, splitSize); //分割后的子块数组

            //分批次推送操作
            for (int i = 0; i < subAry.Length; i++)
            {
                string[] aryItem = (string[])subAry[i];
                var      itemStr = string.Join(",", aryItem);
                try
                {
                    pushPayload.audience = Audience.s_alias(aryItem);

                    var result = JPushClient.SendPush(pushPayload);
                    response.JpushMsgId = result.msg_id;

                    #region 推送日志

                    //System.Threading.Tasks.Task.Run(() =>
                    //{
                    //    //写日志
                    //    Logger.Error("SnsService———>JpushSendToAlias:" + string.Format("认证用户发送jpush用户ID列表:{0}", itemStr));
                    //});

                    #endregion
                }
                catch (Exception e)
                {
                    //Logger.Error("SnsService———>JpushSendToAlias:" + string.Format("认证用户发送jpush:{0},提供的错误信息:{1},id列表:{2}", e.Message, ((cn.jpush.api.common.APIRequestException)e).ErrorMessage, itemStr));
                }
                //休息一秒 避免:Request times of the app_key exceed the limit of current time window
                System.Threading.Thread.Sleep(100);
            }

            return(response);
        }
コード例 #5
0
        /// <summary>
        /// 支付回调
        /// </summary>
        /// <param name="orderNo">订单号/param>
        /// <param name="payAccount">openid或者支付宝帐户</param>
        /// <param name="transaction_id">商户号</param>
        /// <param name="payWay">支付方式</param>
        public void PaymentCallback(string order_no, string payAccount, string transaction_id, int payWay)
        {
            var orders    = this._repoOrder.Table.Where(c => c.OrderNo == order_no).FirstOrDefault();
            var paydetail = this._payDetail.Table.Where(c => c.OrderNo == order_no).FirstOrDefault();

            if (orders.OrderStatusId == (int)EnumHelp.OrderStatus.未付款 && paydetail.PayStatus == (int)EnumHelp.PayStatus.未支付)
            {
                orders.OrderStatusId  = (int)EnumHelp.OrderStatus.已付款;
                orders.PayTime        = DateTime.Now;
                paydetail.PayStatus   = (int)EnumHelp.PayStatus.已支付;
                paydetail.PayTime     = DateTime.Now;
                paydetail.PaySerialNo = transaction_id;
                paydetail.PayType     = payWay;
                _repoOrder.Update(orders);
                _payDetail.Update(paydetail);

                //极光推送商家客户端
                Task.Run(() =>
                {
                    var _request       = new SnsRequest();
                    _request.UserId    = orders.UserId;
                    _request.PushMsg   = "您有新的订单啦!";
                    _request.PushUsers = orders.BusinessInfoId.ToString();
                    var dic            = new Dictionary <string, string>();
                    dic.Add("orderNo", orders.OrderNo);
                    _request.PushExtras = dic;
                    var _response       = _JpushLogBusiness.JpushSendToTag(_request);
                });
            }
        }
コード例 #6
0
        /// <summary>
        /// 推送消息给Ios客户端
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SnsResponse JpushSendToIos(SnsRequest request)
        {
            PushPayload pushPayload = GetPushPayload(request);

            pushPayload.platform = Platform.ios();

            var         result   = JPushClient.SendPush(pushPayload);
            SnsResponse response = new SnsResponse();

            response.JpushMsgId = result.msg_id;
            return(response);
        }
コード例 #7
0
ファイル: SnsService.cs プロジェクト: junlistar/JpushApi
        /// <summary>
        /// 推送消息给特定标签用户
        /// </summary>
        /// <param name="request">request.PushUsers 以,分隔的多个标签</param>
        /// <returns></returns>
        public SnsResponse JpushSendToTag(SnsRequest request)
        {
            PushPayload pushPayload = GetPushPayload(request);
            var         userlist    = request.PushUsers.Split(',');

            pushPayload.audience = Audience.s_tag(userlist);

            var         result   = JPushClient.SendPush(pushPayload);
            SnsResponse response = new SnsResponse();

            response.JpushMsgId = result.msg_id;
            return(response);
        }
コード例 #8
0
        private PushPayload GetPushPayload(SnsRequest request)
        {
            PushPayload pushPayload = new PushPayload();

            pushPayload.platform = Platform.all();
            pushPayload.audience = Audience.all();

            pushPayload.options.apns_production = JpushAppApn; //JpushAppApn
            //pushPayload.notification = new Notification().setAlert(request.PushMsg);

            AndroidNotification androidNotification = new AndroidNotification();
            IosNotification     iosNotification     = new IosNotification();

            androidNotification.setAlert(request.PushMsg);
            iosNotification.setAlert(request.PushMsg);
            if (request.PushExtras != null)
            {
                foreach (var item in request.PushExtras)
                {
                    androidNotification.AddExtra(item.Key, item.Value);
                    iosNotification.AddExtra(item.Key, item.Value);
                }
            }

            if ((int)request.PushType != 0)
            {
                androidNotification.AddExtra("type", (int)request.PushType);
                iosNotification.AddExtra("type", (int)request.PushType);
            }

            cn.jpush.api.push.mode.Notification noti = new cn.jpush.api.push.mode.Notification();
            noti.setAndroid(androidNotification);
            noti.setIos(iosNotification);
            //pushPayload.notification = new Notification().setAndroid(noty1);
            //pushPayload.notification = new Notification().setIos(noty2);

            pushPayload.notification = noti;
            return(pushPayload);
        }
コード例 #9
0
 /// <summary>
 /// 检测某条消息是否推送成功
 /// </summary>
 /// <param name="request">request.PushMsgId</param>
 /// <returns></returns>
 public SnsResponse JpushSendCheck(SnsRequest request)
 {
     return(this._JpushLogBiz.JpushSendCheck(request));
 }
コード例 #10
0
 /// <summary>
 /// 推送消息给标签用户
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public SnsResponse JpushSendToTag(SnsRequest request)
 {
     return(this._JpushLogBiz.JpushSendToTag(request));
 }