示例#1
0
        /// <summary>
        /// Send a raw notification message to the client.
        /// </summary>
        /// <param name="clientURI">Client Uri.</param>
        /// <param name="rawData">The data to send.</param>
        /// <returns>The message send operation result.</returns>
        private static void SendRawMessage(Uri clientURI, byte[] rawData)
        {
            RawPushNotificationMessage message = new RawPushNotificationMessage(MessageSendPriority.High);

            message.RawData = rawData;
            message.SendAsync(clientURI);
        }
        /// <summary>
        /// Send a raw notification message to the client.
        /// </summary>
        /// <param name="clientURI">Client Uri.</param>
        /// <param name="rawData">The data to send.</param>
        /// <returns>The message send operation result for the last message sent .</returns>
        private static MessageSendResult SendMessage(Uri clientURI, byte[] rawData)
        {
            // Send a raw message
            //
            // For more information on the WindowsPhone.Recipes.Push.Messages namespace,
            // and the the push notification implementation please refer this link:
            // http://msdn.microsoft.com/en-us/WP7TrainingCourse_UsingPushNotificationsLab
            //
            RawPushNotificationMessage message = new RawPushNotificationMessage(MessageSendPriority.High);

            message.RawData = rawData;
            MessageSendResult result = message.Send(clientURI);

            return(result);
        }
示例#3
0
        public ActionResult SendRawNotification(MpnsRawViewModel vm)
        {
            if (string.IsNullOrEmpty(vm.Text))
            {
                object error = new { Status = "Error sending notification: Field Text cannot be empty" };
                return(this.Json(error));
            }

            if (!this.EndpointExists(vm.ApplicationId, vm.TileId, vm.ClientId, vm.ChannelUrl))
            {
                object error = new { Status = "Error sending notification: Endpoint does not exist" };
                return(this.Json(error));
            }

            try
            {
                var notification = new RawPushNotificationMessage {
                    RawData = Encoding.UTF8.GetBytes(vm.Text), SendPriority = vm.Priority
                };

                var result = notification.Send(new Uri(vm.ChannelUrl));

                object response =
                    new
                {
                    SubscriptionStatus     = result.SubscriptionStatus.ToString(),
                    DeviceConnectionStatus = result.DeviceConnectionStatus.ToString(),
                    NotificationStatus     = result.NotificationStatus.ToString(),
                    Status = result.LookupDeliveryStatus()
                };

                return(this.Json(response));
            }
            catch (ArgumentOutOfRangeException exception)
            {
                object error = new { Status = exception.Message };
                return(this.Json(error));
            }
            catch (InvalidOperationException exception)
            {
                object error = new { Status = exception.Message };
                return(this.Json(error));
            }
        }
示例#4
0
        /// <summary>
        /// Send raw message to all subscribers. In case that the phone-application
        /// is not running, send tile update and increase tile counter.
        /// </summary>
        protected override void OnSend()
        {
            // Notify phone for having waiting messages.
            var rawMsg = new RawPushNotificationMessage(MessageSendPriority.High)
            {
                RawData = Encoding.ASCII.GetBytes(RawMessage)
            };

            foreach (var subscriber in PushService.Subscribers)
            {
                rawMsg.SendAsync(
                    subscriber.ChannelUri,
                    result =>
                {
                    Log(result);
                    OnRawSent(subscriber.UserName, result);
                },
                    Log);
            }
        }
        public ActionResult SendMicrosoftRaw(string userId, string message)
        {
            if (string.IsNullOrWhiteSpace(message))
            {
                return(this.Json("The notification message cannot be null, empty nor white space.", JsonRequestBehavior.AllowGet));
            }

            var resultList = new List <MessageSendResultLight>();
            var uris       = this.pushUserEndpointsRepository.GetPushUsersByName(userId).Select(u => u.ChannelUri);
            var raw        = new RawPushNotificationMessage
            {
                SendPriority = MessageSendPriority.High,
                RawData      = Encoding.UTF8.GetBytes(message)
            };

            foreach (var uri in uris)
            {
                resultList.Add(raw.SendAndHandleErrors(new Uri(uri)));
            }

            return(this.Json(resultList, JsonRequestBehavior.AllowGet));
        }