Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

Параметр NotificationClass при отправке уведомлений Windows Phone 7

Напечатать страницу
01.05.2010 12:33 | deeper2k

После того, как я рассказал (здесь и здесь) о механизме уведомлений для Windows Phone 7 некоторые из вас немного огорчились, что я не описал смысл заголовка "X-NotificationClass", отправляемого вместе с самим уведомлением. Исправляюсь.

Итак, как мы помним, для отправки какого-либо уведомления мы используем адрес, полученный от сервиса в облаке и переданный третьему приложению для отправки уведомлений. Например, для отправки Toast-уведомления мы использовали с вами следующий программный код:

class Program
{
    private const string Url = @"http://sn1.notify.live.net/throttledthirdparty/01.00/AAFTkavjFpAuT4i1fIKvueDiAgoOs1ADAgAAAAQOMDAwAAAAAAAAAAAAAAA";

    static void Main(string[] args)
    {
        Console.Write("Header: ");
        string header = Console.ReadLine();
        Console.Write("Text: ");
        string text = Console.ReadLine();
        SendToast(Url, header, text);
        Console.ReadLine();
    }

    static void SendToast(string uri, string header, string text)
    {
        var client = new WebClient();

        client.Headers.Add("Content-Type", "text/html");
        client.Headers.Add("X-NotificationClass", "2");

        var message = "X-WindowsPhone-Target: toast" + Environment.NewLine + Environment.NewLine +
            @"<?xml version=""1.0"" encoding=""utf-8""?>
                <wp:PushNotification xmlns:wp=""WindowsPhonePushNotification"">
                    <wp:Toast>
                        <wp:Text1>{0}</wp:Text1>
                        <wp:Text2>{1}</wp:Text2>
                    </wp:Toast>
                </wp:PushNotification>";

        var result = client.UploadString(uri, "POST", String.Format(message, header, text));
        Console.WriteLine(result);
        Console.WriteLine("Device status is {0}", client.ResponseHeaders["X-DeviceConnectionStatus"]);
        Console.WriteLine("Notification status is {0}", client.ResponseHeaders["X-NotificationStatus"]);
    }
}


Как видно, перед отправкой сообщения мы определяем специальный HTTP-заголовок "X-NotificationClass", который в каждом случае имеет разные значения. Какие значения может принимать этот заголовок и для чего он нужен? Давайте разберемся.

На самом деле этот заголовок выполняет две важные функции - определение типа уведомления и задание приоритета самого сообщения. Как я уже говорил, существует три типа уведомлений:

  • Tile-уведомления - уведомления могут изменять изображение на "рабочем столе";
  • Toast-уведомления - уведомления всплывают в виде текстовых подсказок, по нажатию на которые можно перейти к самому приложению (даже если оно свернуто);
  • Raw-уведомления - разработчик может сам определить логику обработки уведомления.


Выбор типа уведомления (Tile, Toast или Raw) зависит от того, какой диапазон значений используется. Уже внутри этого диапазона выбираются приоритеты.

Для Tile-уведомлений вы можете использовать одно из следующих значений в зависимости от приоритета:

  • 21: обычный приоритет;
  • 11: приоритетные уведомления (уведомления будут доставляться с фиксированным интервалом времени);
  • 1: приоритет "Real Time" (уведомление будет доставлено настолько быстро, насколько это возможно).


Для Toast-уведомлений вы можете использовать одно из следующих значений в зависимости от приоритета:

  • 22: обычный приоритет;
  • 12: приоритетные уведомления (уведомления будут доставляться с фиксированным интервалом времени);
  • 2: приоритет "Real Time" (уведомление будет доставлено настолько быстро, насколько это возможно).


Для Raw-уведомлений вы можете использовать одно из следующих значений в зависимости от приоритета:

  • 23-31: обычный приоритет;
  • 13-20: приоритетные уведомления (уведомления будут доставляться с фиксированным интервалом времени);
  • 3-10: приоритет "Real Time" (уведомление будет доставлено настолько быстро, насколько это возможно).


Таким образом, при отправке уведомлений мы можем изменять их тип и приоритет.


Источник: http://blog.zwezdin.com/ru
Автор: sergey.zwezdin

Комментарии

Комментариев нет...
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.027 секунд (Общее время SQL: 0.014 секунд - SQL запросов: 53 - Среднее время SQL: 0.00026 секунд))
Top.Mail.Ru