Эта статья является Днем № 10 из цикла под названием « 31 день Windows 8» . Каждая из статей этой серии будет опубликована как для HTML5 / JS, так и для XAML / C # . Вы можете найти дополнительные ресурсы, загрузки и исходный код на нашем сайте .
Вчера мы потратили некоторое время на просмотр Live Tiles и на то, как сообщить пользователям о важной информации из вашего приложения. Сегодня мы рассмотрим другой тип уведомлений пользователя: уведомления о тостах.
Если вы раньше не работали с уведомлениями о тостах, это слово может показаться вам немного глупым. Слово «тост» в данном случае происходит от изображения тоста, выходящего из тостера. Наши уведомления появляются аналогичным образом, появляясь перед нашим пользователем, чтобы сообщить им, когда произошло что-то интересное.
Основное различие между уведомлениями Toast и уведомлениями Live Tile заключается в том, что сообщения Toast будут отображаться на экране пользователя независимо от того, какое приложение они в данный момент используют. Живые плитки должны просматриваться на стартовом экране пользователя.
Тосты кричат: «ТЫ ДОЛЖЕН ЗНАТЬ ЭТУ ИНФОРМАЦИЮ ПРЯМО СЕЙЧАС!» где живые плитки значительно более пассивны. Обязательно учитывайте это при отправке тостовых сообщений. Если вы рассылаете им спам с несущественной чепухой, они отключат вашу возможность отправлять уведомления или, что еще хуже, удалят ваше приложение. Прежде чем углубляться в это, убедитесь, что вы потратили немного времени, чтобы прочитать руководство Microsoft по уведомлениям о тостах .
Для справки вот несколько примеров уведомлений о тостах.
Как и в случае с живыми плитками, есть целый каталог типов уведомлений о тостах, которые вы можете использовать , но мы скоро к ним вернемся.
Включение уведомлений о тостах в вашем приложении
Наш первый шаг к совершенству с помощью уведомлений Toast — это включение их в манифест нашего приложения. Откройте файл package.appxmanifest на вкладке «Интерфейс приложения» и выберите «Да» в раскрывающемся списке «Поддержка Toast».
Когда вы пройдете эту статью, будет очень заманчиво создать файл логотипа 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. И вот как эта точная плитка выглядит на моей машине:
Но подождите, это еще не все! Если вы создали проект и запустили всплывающее сообщение, вы, возможно, заметили, что к нему есть аудиоклип. Это звук уведомления по умолчанию, но у вас есть варианты. Есть также некоторые другие интересные вещи, которые вы можете сделать с тостами.
Настройка звука для уведомления о тосте (и не только!)
Все в создании уведомления о тосте остается неизменным, но мы можем добавить несколько дополнительных узлов в наш 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, всплывающие сообщения — отличный способ привлечь внимание пользователя, независимо от того, чем он сейчас занимается. Некоторые из вас, вероятно, задаются вопросом, как мы делаем эти обновления из фоновой задачи, и для вас я прошу терпения. Мы хотели убедиться, что дали исчерпывающий обзор каждого из этих типов уведомлений, прежде чем углубиться в фоновые задачи. Вы только два дня от этой темы, я обещаю.
Если вы хотите загрузить полное кодовое решение для этой статьи, щелкните значок ниже:
Завтра мы рассмотрим нашу последнюю тему в мире уведомлений, Экран блокировки. Увидимся позже!