Статьи

31 день Windows 8 | День № 10: Уведомления о тостах

Эта статья является Днем № 10 из цикла под названием « 31 день Windows 8» . Каждая из статей этой серии будет опубликована как для HTML5 / JS, так и для XAML / C # . Вы можете найти дополнительные ресурсы, загрузки и исходный код на нашем сайте .

advertisementsample

Вчера мы потратили некоторое время на просмотр Live Tiles и на то, как сообщить пользователям о важной информации из вашего приложения. Сегодня мы рассмотрим другой тип уведомлений пользователя: уведомления о тостах.

Если вы раньше не работали с уведомлениями о тостах, это слово может показаться вам немного глупым. Слово «тост» в данном случае происходит от изображения тоста, выходящего из тостера. Наши уведомления появляются аналогичным образом, появляясь перед нашим пользователем, чтобы сообщить им, когда произошло что-то интересное.

Основное различие между уведомлениями Toast и уведомлениями Live Tile заключается в том, что сообщения Toast будут отображаться на экране пользователя независимо от того, какое приложение они в данный момент используют. Живые плитки должны просматриваться на стартовом экране пользователя.

Тосты кричат: «ТЫ ДОЛЖЕН ЗНАТЬ ЭТУ ИНФОРМАЦИЮ ПРЯМО СЕЙЧАС!» где живые плитки значительно более пассивны. Обязательно учитывайте это при отправке тостовых сообщений. Если вы рассылаете им спам с несущественной чепухой, они отключат вашу возможность отправлять уведомления или, что еще хуже, удалят ваше приложение. Прежде чем углубляться в это, убедитесь, что вы потратили немного времени, чтобы прочитать руководство Microsoft по уведомлениям о тостах .

Для справки вот несколько примеров уведомлений о тостах.

Как и в случае с живыми плитками, есть целый каталог типов уведомлений о тостах, которые вы можете использовать , но мы скоро к ним вернемся.

Включение уведомлений о тостах в вашем приложении

Наш первый шаг к совершенству с помощью уведомлений Toast — это включение их в манифест нашего приложения. Откройте файл package.appxmanifest на вкладке «Интерфейс приложения» и выберите «Да» в раскрывающемся списке «Поддержка Toast».

10-XAML-EnableToastNotifications

Когда вы пройдете эту статью, будет очень заманчиво создать файл логотипа Badge и загрузить его в свое приложение, но для этого урока это не так. Вот почему:

Если вы загружаете логотип значка, вы должны включить уведомления экрана блокировки. Однако, если включены уведомления экрана блокировки, у вас должна быть фоновая задача. Мы не рассматриваем фоновые задачи еще два дня, а обновления экрана блокировки — завтра. Просто будьте терпеливы.:)

Сегодня мы сфокусированы на уведомлении пользователя с помощью сообщения Toast. Давайте вернемся к этому.

Запуск тост-уведомления из вашего приложения

Вчера статья 9-го дня была посвящена живым плиткам , и если вы прочитаете это, запуск уведомлений о тостах покажется невероятно знакомым. Вот код, который вам нужен, чтобы это произошло:

ToastTemplateType toastType = ToastTemplateType.ToastImageAndText02;
XmlDocument toastXML = ToastNotificationManager.GetTemplateContent(toastType);
XmlNodeList toastText = toastXML.GetElementsByTagName("text");
XmlNodeList toastImages = toastXML.GetElementsByTagName("image");
toastText[0].InnerText = "Funny cat";
toastText[1].InnerText = "This cat looks like it's trying to eat your face.";
((XmlElement)toastImages[0]).SetAttribute("src", "ms-appx:///Assets/10-XAML-CatImageSmall.png");
((XmlElement)toastImages[0]).SetAttribute("alt", "Scary Cat Face");
 
ToastNotification toast = new ToastNotification(toastXML);
ToastNotificationManager.CreateToastNotifier().Show(toast);

Как и в случае с Live Tiles, мы делаем с Toast. Первая строка выбирает наш шаблон тостов. Затем мы берем XML для этого шаблона и сохраняем его в toastXML. Вот как выглядит XML для этого шаблона:

<toast>
    <visual>
        <binding template="ToastImageAndText02">
            <image id="1" src="image1" alt="image1"/>
            <text id="1">headlineText</text>
            <text id="2">bodyText</text>
        </binding>  
    </visual>
</toast>

Как видите, у нас есть два свойства текста и одно свойство изображения. Следующими шагами в нашем примере кода было присвоение значений этим свойствам. Для изображения вы заметите, что на этот раз я добавил дополнительную строку со ссылкой на атрибут «alt». Если вы раньше занимались веб-разработкой, вы, вероятно, уже знаете, что это такое, но это важная часть истории доступности в Windows 8. Она предоставляет текстовое представление изображения для тех пользователей, которые не могут видеть свой экран. ,

Наконец, мы создаем новый объект ToastNotification и показываем его на экране. Это простая история создания всплывающих уведомлений в Windows 8. И вот как эта точная плитка выглядит на моей машине:

10-XAML-CatToast

Но подождите, это еще не все! Если вы создали проект и запустили всплывающее сообщение, вы, возможно, заметили, что к нему есть аудиоклип. Это звук уведомления по умолчанию, но у вас есть варианты. Есть также некоторые другие интересные вещи, которые вы можете сделать с тостами.

Настройка звука для уведомления о тосте (и не только!)

Все в создании уведомления о тосте остается неизменным, но мы можем добавить несколько дополнительных узлов в наш XML, чтобы выбрать другой звуковой звук, установить длительность сообщения и даже продиктовать страницу для запуска при нажатии на уведомление (с параметрами запроса также!)

Во-первых, у меня есть плохие новости. Вы не можете использовать свой собственный аудио файл. Я знаю, что вы надеялись порадовать своего пользователя звуком тостера, но это просто невозможно. Вместо этого вы можете выбрать из списка 9 аудиофайлов, 4 из которых представляют собой циклические звуки, которые можно использовать в качестве мелодий звонка или будильника.  Вы можете увидеть полный список аудиофайлов и описания, доступные для уведомлений о тостах здесь .

Чтобы установить звук, сначала нужно открыть XML, который мы создали. По умолчанию ни у одного из шаблонов Toast не определен аудио узел, поэтому нам нужно его создать. Сначала нам нужно погрузиться в узел <toast> нашего шаблона, а затем мы можем установить наши параметры. В приведенном ниже примере кода я включил то же самое уведомление о Toast, что и ранее в этой статье, но с некоторыми комментариями, поясняющими новые строки для наших дополнительных опций.

ToastTemplateType toastType = ToastTemplateType.ToastImageAndText02;
XmlDocument toastXML = ToastNotificationManager.GetTemplateContent(toastType);
XmlNodeList toastText = toastXML.GetElementsByTagName("text");
XmlNodeList toastImages = toastXML.GetElementsByTagName("image");
toastText[0].InnerText = "Funny cat";
toastText[1].InnerText = "This cat looks like it's trying to eat your face.";
((XmlElement)toastImages[0]).SetAttribute("src", "ms-appx:///Assets/10-XAML-CatImageSmall.png");
((XmlElement)toastImages[0]).SetAttribute("alt", "Scary Cat Face");
 
//This is the options code, which is all optional based on your needs.
IXmlNode toastNode = toastXML.SelectSingleNode("/toast");
            
((XmlElement)toastNode).SetAttribute("duration", "long");
 
XmlElement audioNode = toastXML.CreateElement("audio");
audioNode.SetAttribute("src", "ms-winsoundevent:Notification.Looping.Alarm");
 
//Must be used when looping audio has been selected.
audioNode.SetAttribute("loop", "true");
toastNode.AppendChild(audioNode);
 
//You can append any text data you would like to the optional
//launch property, but clicking a Toast message should drive
//the user to something contextually relevant.
((XmlElement)toastNode).SetAttribute("launch", "<cat state='angry'><facebite state='true' /></cat>");
 
ToastNotification toast = new ToastNotification(toastXML);
ToastNotificationManager.CreateToastNotifier().Show(toast);

Важно помнить, что все параметры являются необязательными, как вы могли заметить по их отсутствию в нашем первом примере. Вот несколько вещей, которые нужно помнить об этих опциях:

  • Длинные сообщения Toast предназначены для таких вещей, как VOIP-звонки и будильники, а не для уведомлений по электронной почте. Используйте это экономно.
  • Все доступные варианты зацикливания звука будут работать только в том случае, если вы установили длительность Long.
  • Параметры зацикливания звука будут работать только в том случае, если для атрибута «loop» также установлено значение true.

Несоблюдение этих правил приведет к воспроизведению звука Notification.Default.

Кроме того, вы можете захотеть использовать SILENCE для вашего тостового сообщения вместо любой из опций аудио. Вы можете сделать это. В этом случае вы по-прежнему указываете audioNode, но вы устанавливаете для нового атрибута silent значение true, например:

audioNode.SetAttribute("silent", "true");

Это приведет к тихому, но в остальном нормальному уведомлению о тосте для вашего пользователя. Наконец, есть атрибут «запуск». В рамках этого мы можем передать любую текстовую строку, которая нам нравится, и она будет передана нам в качестве параметра страницы, когда пользователь нажимает на тост-сообщение. Эти данные должны позволить вам определить, на какую страницу направлять их, с какими данными их заполнять. Не помещайте в параметр «запуск» ничего, что не нужно для поездки.

Резюме

Вот и все для всплывающих уведомлений в Windows 8. Очень похоже на Live Tiles, всплывающие сообщения — отличный способ привлечь внимание пользователя, независимо от того, чем он сейчас занимается. Некоторые из вас, вероятно, задаются вопросом, как мы делаем эти обновления из фоновой задачи, и для вас я прошу терпения. Мы хотели убедиться, что дали исчерпывающий обзор каждого из этих типов уведомлений, прежде чем углубиться в фоновые задачи. Вы только два дня от этой темы, я обещаю.

Если вы хотите загрузить полное кодовое решение для этой статьи, щелкните значок ниже:

downloadXAML

Завтра мы рассмотрим нашу последнюю тему в мире уведомлений, Экран блокировки. Увидимся позже!

downloadTheTools