установка push-уведомлений в windows phone 7 - PullRequest
0 голосов
/ 06 июля 2011

Мне нужно реализовать push-уведомления в моем проекте.У него есть отправитель (приложение Windows Phone Windows), служба wcf и клиент (приложение Windows Phone).

Как я могу заменить отправителя и использовать свой URL для отправки и получения уведомлений от клиента?

я хочу, чтобы отправитель был каким-то приложением в самом эмуляторе, который работает параллельно с клиентом и непрерывно передает данные клиенту.

как разработать такое приложение

Кто-нибудь может подсказать, как это сделать.

1 Ответ

1 голос
/ 06 июля 2011

Звучит так, как будто вы хотите использовать два приложения WP7 для отправки сообщений друг другу, используя функцию push-уведомлений.Это правильно?

Насколько я понимаю, вам по-прежнему будет необходимо, чтобы каждое устройство подписывалось на службу push-уведомлений (MS-хостинг), используя уникальный URI, возвращаемый при успешной подписке.Похоже, что SL3 / 4 может создавать объекты HttpWebRequest и, следовательно, должен иметь возможность сформулировать правильный пакет для отправки, однако сложность, как я вижу, состоит в том, как получить URI устройства, на которое вы хотите отправить сообщение.Обычно сообщение отправляется подписчику, который знает его по URI, как он был возвращен во время фазы подписки.

Мой размещенный код WCF работает только в том случае, если WCF знает URI устройства, который отправляется, когдаМетод WCF называется:

    public bool sendTileUpdate(string tileText, string url, string image)
    {
        string TilePushXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<wp:Notification xmlns:wp=\"WPNotification\">" +
                "<wp:Tile>" +
                "<wp:BackgroundImage>{2}</wp:BackgroundImage>" +
                "<wp:Count>{0}</wp:Count>" +
                "<wp:Title>{1}</wp:Title>" +
                "</wp:Tile>" +
                "</wp:Notification>";

        try
        {
            HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(url);
            sendNotificationRequest.Method = "POST";
            sendNotificationRequest.Headers = new WebHeaderCollection();
            sendNotificationRequest.ContentType = "text/xml";

            // Tile
            sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token");
            sendNotificationRequest.Headers.Add("X-NotificationClass", "1");

            string str = string.Format(TilePushXML, "", tileText, image);

            byte[] strBytes = new UTF8Encoding().GetBytes(str);
            sendNotificationRequest.ContentLength = strBytes.Length;
            using (Stream requestStream = sendNotificationRequest.GetRequestStream())
            {
                requestStream.Write(strBytes, 0, strBytes.Length);
            }
            HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse();
            string notificationStatus = response.Headers["X-NotificationStatus"];
            string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"];
            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }

Я знаю, что это TileNotification, но принципы те же.

Я понимаю, что Mango (WP7.1 и SL4) будет поддерживать сокеты и это может быть более подходящим способом для ваших устройств общаться!

Удачи,

Джейсон.

...