none
Кирилица в tile notification RRS feed

  • Вопрос

  • Всем доброго времени суток.

    У меня возникла проблема при отправке tile notification с кирилицей в контенте. Все работает нормально для латинских симовлов. Но если отправлять "<wp:WideBackContent>" + XmlEncode("пример текста") + "</wp:WideBackContent>" нотификация не доходит до девайса. Зарание примного благодарен.   Вот пример кода, что я использую:

      protected void ButtonSendTile_Click(object sender, EventArgs e)
            {
                try
                {
                    // Get the Uri that the Microsoft Push Notification Service returns to the Push Client when creating a notification channel.
                    // Normally, a web service would listen for Uri's coming from the web client and maintain a list of Uri's to send
                    // notifications out to.
                    string subscriptionUri = TextBoxUri.Text.ToString();

                    HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(subscriptionUri);

                    // We will create a HTTPWebRequest that posts the tile notification to the Microsoft Push Notification Service.
                    // HTTP POST is the only allowed method to send the notification.
                    sendNotificationRequest.Method = "POST";

                    // The optional custom header X-MessageID uniquely identifies a notification message.
                    // If it is present, the // same value is returned in the notification response. It must be a string that contains a UUID.
                    // sendNotificationRequest.Headers.Add("X-MessageID", "<UUID>");

                    // Create the tile message.
                    string tileMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                    "<wp:Notification xmlns:wp=\"WPNotification\">" +
                        "<wp:Tile>" +
                         // "<wp:BackgroundImage>" + TextBoxBackgroundImage.Text + "</wp:BackgroundImage>" +
                         // "<wp:WideBackgroundImage>" + TextBoxBackgroundImage.Text + "</wp:WideBackgroundImage>" +
                          "<wp:Count>" + TextBoxCount.Text + "</wp:Count>" +
                          "<wp:Title>" + TextBoxTitle.Text + "</wp:Title>" +
                          //"<wp:BackBackgroundImage>" + TextBoxBackBackgroundImage.Text + "</wp:BackBackgroundImage>" +
                          "<wp:BackTitle>" + TextBoxBackTitle.Text + "</wp:BackTitle>" +
                          "<wp:WideBackContent>" + XmlEncode(TextBoxBackTitle.Text) + " wide" + "</wp:WideBackContent>" +
                          "<wp:BackContent>" + XmlEncode(TextBoxBackContent.Text) + "</wp:BackContent>" +
                       "</wp:Tile> " +
                    "</wp:Notification>";

                    // Sets the notification payload to send.
                    byte[] notificationMessage = Encoding.Default.GetBytes(tileMessage);

                    // Sets the web request content length.
                    sendNotificationRequest.ContentLength = notificationMessage.Length;
                    sendNotificationRequest.ContentType = "text/xml";
                    sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token");
                    sendNotificationRequest.Headers.Add("X-NotificationClass", "1");


                    using (Stream requestStream = sendNotificationRequest.GetRequestStream())
                    {
                        requestStream.Write(notificationMessage, 0, notificationMessage.Length);
                    }

                    // Send the notification and get the response.
                    HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse();
                    string notificationStatus = response.Headers["X-NotificationStatus"];
                    string notificationChannelStatus = response.Headers["X-SubscriptionStatus"];
                    string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"];

                    // Display the response from the Microsoft Push Notification Service.  
                    // Normally, error handling code would be here.  In the real world, because data connections are not always available,
                    // notifications may need to be throttled back if the device cannot be reached.
                    TextBoxResponse.Text = notificationStatus + " | " + deviceConnectionStatus + " | " + notificationChannelStatus;
                }
                catch (Exception ex)
                {
                    TextBoxResponse.Text = "Exception caught sending update: " + ex.ToString();
                }

            }

            protected string XmlEncode(string text)
            {
                string a = System.Security.SecurityElement.Escape(text);
                return a;
            }
        }

    26 марта 2013 г. 16:55

Ответы

Все ответы