установка push-уведомлений в windows phone 7

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

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

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

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

может кто подскажет дорогу.


person curiosity    schedule 06.07.2011    source источник
comment
Извините, я не понимаю, что вы имеете в виду. пожалуйста, уточните свой вопрос. Кроме того, уведомления являются односторонними, поэтому вы не можете использовать их для отправки и получения уведомлений от клиента.   -  person ZombieSheep    schedule 06.07.2011
comment
я редактирую вопрос, теперь вы понимаете?   -  person curiosity    schedule 06.07.2011


Ответы (1)


Звучит так, как будто вы хотите использовать два приложения 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) будет поддерживать сокеты и это может быть более подходящим способом связи для ваших устройств!

Удачи,

Джейсон.

person Jason James    schedule 06.07.2011