Эта статья является Днем № 10 из цикла под названием « 31 день Windows 8» . Каждая из статей этой серии будет опубликована как для HTML5 / JS, так и для XAML / C # . Вы можете найти дополнительные ресурсы, загрузки и исходный код на нашем сайте .
Вчера мы потратили некоторое время на просмотр Live Tiles и на то, как сообщить пользователям о важной информации из вашего приложения. Сегодня мы рассмотрим другой тип уведомлений пользователя: уведомления о тостах .
Если вы раньше не работали с уведомлениями о тостах, это слово может показаться вам немного глупым. Слово «тост» в данном случае происходит от изображения тоста, выходящего из тостера. Вкусно. Наши уведомления появляются аналогичным образом, появляясь перед нашим пользователем, чтобы сообщить им, когда произошло что-то интересное.
Основное различие между уведомлениями Toast и уведомлениями Live Tile заключается в том, что сообщения Toast будут отображаться на экране пользователя независимо от того, какое приложение они в данный момент используют. По умолчанию в верхнем правом углу. Живые плитки должны просматриваться на стартовом экране пользователя.
Тосты кричат: «ТЫ ДОЛЖЕН ЗНАТЬ ЭТУ ИНФОРМАЦИЮ ПРЯМО СЕЙЧАС!» где живые плитки значительно более пассивны. Обязательно учитывайте это при отправке тостовых сообщений. Если вы рассылаете им спам с несущественной чепухой, они отключат вашу возможность отправлять уведомления или, что еще хуже, удалят ваше приложение. Прежде чем углубляться в это, убедитесь, что вы потратили немного времени, чтобы прочитать руководство Microsoft по уведомлениям о тостах .
Для справки вот несколько примеров уведомлений о тостах.
Как и в случае с живыми плитками, есть целый каталог типов уведомлений о тостах, которые вы можете использовать , но мы скоро к ним вернемся.
Включение уведомлений о тостах в вашем приложении
Наш первый шаг к совершенству с помощью уведомлений Toast — это включение их в манифест нашего приложения. Откройте файл package.appxmanifest на вкладке «Интерфейс приложения» и выберите «Да» в раскрывающемся списке «Поддержка Toast».
Когда вы пройдете эту статью, будет очень заманчиво создать файл логотипа Badge и загрузить его в свое приложение, но для этого урока это не так. Вот почему:
Если вы загружаете логотип значка, вы должны включить уведомления экрана блокировки. Однако, если включены уведомления экрана блокировки, у вас должна быть фоновая задача. Мы не рассматриваем фоновые задачи еще два дня, а обновления экрана блокировки — завтра. Просто будьте терпеливы.
Сегодня мы сфокусированы на уведомлении пользователя с помощью сообщения Toast. Давайте вернемся к этому.
Запуск тост-уведомления из вашего приложения
Вчера статья 9-го дня была посвящена живым плиткам , и если вы прочитаете это, запуск уведомлений о тостах покажется * невероятно * знакомым, и я не буду вдаваться в подробности здесь. Так же, как живые плитки, существует XML-схема, представляющая тост, который мы хотим отправить, обратите внимание, <тост> .
<toast> <visual> <binding template="ToastImageAndText01"> <image id="1" src="image1" alt="image1"/> <text id="1">bodyText</text> </binding> </visual> </toast>
Как и в случае с Live Tiles, мы делаем то же самое или очень похоже на тост.
- Получить экземпляр уведомления WinRT
- Из уведомлений получите свой шаблон
- Из этого шаблона получите его содержимое, то есть XML, который мы показали выше
- Выберите и обновите соответственно
- (необязательно) установите продолжительность
- (необязательно) установить аудио
- (необязательно) установить любые параметры запуска приложения
- Создать новое уведомление плитки
- Отправить обновление плитки
var notifications = Windows.UI.Notifications; var template = notifications.ToastTemplateType.toastImageAndText02; var toastXml = notifications.ToastNotificationManager.getTemplateContent(template); var toastTextElements = toastXml.getElementsByTagName("text"); toastTextElements[0].innerText = "31 Days of Windows 8"; toastTextElements[1].innerText = _toastMessage.value; //taking from screen var toastImageElements = toastXml.getElementsByTagName("image"); toastImageElements[0].setAttribute("src", "ms-appx:///images/clarkHeadShot.jpg"); toastImageElements[0].setAttribute("alt", "Clark's Head"); var toast = new notifications.ToastNotification(toastXml); var toastNotifier = notifications.ToastNotificationManager.createToastNotifier(); toastNotifier.show(toast);
Как вы можете видеть, это страшно похоже на Live Tiles. Я устанавливаю два свойства текста и одно свойство изображения. Для изображения вы заметите, что на этот раз я добавил дополнительную строку со ссылкой на атрибут «alt». Если вы раньше занимались веб-разработкой, вы, вероятно, уже знаете, что это такое, но это важная часть истории доступности в Windows 8. Она предоставляет текстовое представление изображения для тех пользователей, которые не могут видеть свой экран. ,
Наконец, мы создаем новый объект ToastNotification и показываем (toast) его на экране. Это простая история создания всплывающих уведомлений в Windows 8. А вот как выглядит точная плитка на моем компьютере:
Но подождите, это еще не все! Если вы создали проект и запустили всплывающее сообщение, вы, возможно, заметили, что к нему есть аудиоклип. Это звук уведомления по умолчанию, но у вас есть варианты. Есть также некоторые другие интересные вещи, которые вы можете сделать с тостами.
Настройка звука для уведомления о тосте (и не только!)
Все в создании уведомления о тосте остается неизменным, но мы можем добавить несколько дополнительных узлов в наш XML, чтобы выбрать другой звуковой звук, установить длительность сообщения и даже продиктовать страницу для запуска при нажатии на уведомление (с параметрами запроса также!)
Во-первых, у меня есть плохие новости. Вы не можете использовать свой собственный аудио файл. Я знаю, что вы надеялись порадовать своего пользователя звуком тостера, но это просто невозможно. Вместо этого вы можете выбрать из списка 9 аудиофайлов, 4 из которых представляют собой циклические звуки, которые можно использовать в качестве мелодий звонка или будильника. Вы можете увидеть полный список аудиофайлов и описания, доступные для уведомлений о тостах здесь .
Чтобы установить звук, сначала нужно открыть XML, который мы создали. По умолчанию ни у одного из шаблонов Toast не определен аудио узел , поэтому нам нужно его создать. Сначала нам нужно погрузиться в узел <toast> нашего шаблона, а затем мы можем установить наши параметры. В приведенном ниже примере кода я исключил код для создания уведомления Toast (просто посмотрите выше) и просто добавил часть, где мы изменили бы шаблон, чтобы добавить наш аудиоклип.
.... var toastNode = toastXml.selectSingleNode("/toast"); var audio = toastXml.createElement("audio"); audio.setAttribute("src", "ms-winsoundevent:Notification.IM"); toastNode.appendChild(audio); ....
Вы также можете установить продолжительность, как долго он будет оставаться на экране для части тоста.
.... var toastNode = toastXml.selectSingleNode("/toast"); toastNode.setAttribute("duration", "long"); ....
Важно помнить, что все параметры являются необязательными, как вы могли заметить по их отсутствию в нашем первом примере. Вот несколько вещей, которые нужно помнить об этих опциях:
-
Длинные сообщения Toast предназначены для таких вещей, как VOIP-звонки и будильники, а не для уведомлений по электронной почте. Используйте это экономно.
-
Все доступные варианты зацикливания звука будут работать только в том случае, если вы установили длительность Long.
-
Параметры зацикливания звука будут работать только в том случае, если для атрибута «loop» также установлено значение true.
Несоблюдение этих правил приведет к воспроизведению звука Notification.Default .
Кроме того, вы можете захотеть использовать SILENCE для вашего тостового сообщения вместо любой из опций аудио. Вы можете сделать это. В этом случае вы по-прежнему указываете audioNode , но вы устанавливаете для нового атрибута silent значение true, например:
var audio = toastXml.createElement("audio"); audio.setAttribute("silent", "true");
Это приведет к тихому, но в остальном нормальному уведомлению о тосте для вашего пользователя. Наконец, есть атрибут « запуск ». В рамках этого мы можем передать любую текстовую строку, которая нам нравится, и она будет передана нам в качестве параметра страницы, когда пользователь нажимает на тост-сообщение. Эти данные должны позволить вам определить, на какую страницу направлять их, с какими данными их заполнять. Не помещайте в параметр «запуск» ничего, что не нужно для поездки.
.... var toastXml = notifications.ToastNotificationManager.getTemplateContent(template); ... toastXml.selectSingleNode("/toast").setAttribute("launch", '{ "type":"toast", "args1":"31days", "args2":"#10"}' ); ....
Резюме
Вот и все для всплывающих уведомлений в Windows 8. Очень похоже на Live Tiles, всплывающие сообщения — отличный способ привлечь внимание пользователя, независимо от того, чем он сейчас занимается. Некоторые из вас, вероятно, задаются вопросом, как мы производим эти обновления из фоновой задачи, и для вас мы просим терпения. Мы хотели убедиться, что дали исчерпывающий обзор каждого из этих типов уведомлений, прежде чем углубиться в фоновые задачи. Вы только два дня от этой темы, я обещаю.
Если вы хотите загрузить полное кодовое решение для этой статьи, щелкните значок ниже:
Завтра мы рассмотрим нашу последнюю тему в мире уведомлений, Экран блокировки. Увидимся позже!