Параметр NotificationClass при отправке уведомлений Windows Phone 7
После того, как я рассказал (
Итак, как мы помним, для отправки какого-либо уведомления мы используем адрес, полученный от сервиса в облаке и переданный третьему приложению для отправки уведомлений. Например, для отправки 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" (уведомление будет доставлено настолько быстро, насколько это возможно).
Таким образом, при отправке уведомлений мы можем изменять их тип и приоритет.
Источник:
Автор: sergey.zwezdin
По теме
- Видео-курсы от MS: Разработка приложений виртуальной и расширенной реальности на платформе Microsoft
- ECMA JavaScript 6: Объекты
- Как просто создать приложение для iPhone
- Разработка приложений под Windows Phone 8
- Индексированное хранилище, часть 2
- Индексированное хранилище, часть 1
- Начала Metro-программирования: создание настраиваемых приложений (ч.2)
- Начала Metro-программирования: создание настраиваемых приложений (ч.1)
- Начала Metro-программирования: создание компонентов WinRT (ч.3)
- Начала Metro-программирования: создание компонентов WinRT (ч.2)