English version

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

После того, как я рассказал (здесь и здесь) о механизме уведомлений для 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 Notifications вы можете использовать одно из следующих значений в зависимости от приоритета:

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

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

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

Автоматический запуск приложений в Windows Phone Classic ← → Совместимость приложений Windows Phone Classic и Windows Phone 7

Похожие публикации

Добавить комментарий

Для отображения аватара испольузется Gravatar
Можно форматрировать текст при помощи Markdown