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

Автор: Topol Суббота, Май 5th, 2012 Нет комментариев

Рубрика: Операционные системы

После того, как я рассказал (здесь и здесь) о механизме уведомлений для 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» (уведомление будет доставлено настолько быстро, насколько это возможно).

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

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты