Toast通知是在Win8时代就已经存在的东西,如果做个Win8的应用,应该熟悉下面的语句
ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText01)这个语句是获取对应的通知模板,具体的模板样式可以参考MSDN文档: 链接 链接2
在UWP中,不必选择不同的模板,采用的统一模板:
<toast> <visual> <binding template="ToastGeneric"> <text>Text</text> <text>Content</text> <text/> <image placement="inline" src="***" /> </binding> </visual> <actions> <input id="input1" type="selection" defaultInput="2"> <selection id="1" content="select1" /> <selection id="2" content="select2" /> </input> <input id="input2" type="text" placeHolderContent="***" /> <action content="cancel" arguments="cancel" imageUri="***" /> <action content="ok" arguments="check" activationType="foreground"/> </actions> <audio src="ms-winsoundevent:Notification.Reminder"/> </toast>
现在对这个模板中的节点进行简单讲解,详细介绍可以参考文章末尾给出的链接
1、根节点 toast
这个其实没什么好说明的,就这么用呗
说明下Toast通知的种类。UWP中开发者可以为闹钟、日历、来电使用toast通知,提醒的toast通知可以一直停在屏幕上,直到用户忽略或对其进行操作,闹钟会自动播放声音,来电通知会全屏显示,这些可以通过toast节点的scenario属性来设置。
2、视觉区域 visual
位于根节点下,要求有一个binding节点。用来存放通知的内容,可以包含文本和图像。
3、binding 节点
正如上所说,是用来存放通知的内容,可以包含文本和图像。在UWP中属性template只有一个值可选,模板名称“ToastGeneric”。这么做明显比之前的Win8还要选择模板灵活了许多。
4、text 节点
表示一行文本,要显示多行,就添加多个text节点即可。不设置text的内容就作为空白行
5、image 节点
image 节点最重要的属性当然是src,用于设置图像的来源,可以是一张网络图片(http),也可以是一张本地资源(ms-appx:///)或者其他来源
在uwp中有两个新的可选属性
placement:如果设置为inline,则表示图像和文本内联在一起;如果为appLogoOverride,就替换了应用的默认图标,图像将显示在通知的左上角。注意,placement属性的各个取值只能出现一次。
hint-crop:默认值为none,如果设置为circle,则图标会变成圆形。(你喜欢果蛆圆吗?)
6、行为节点 actions
在UWP应用中,开发者可以添加自定义交互行为到toast通知里。有两中类型的子节点,input和action,注意的是input元素必须放在action元素的前面。
7、input 节点
input节点的id属性必须设置,而且必须唯一,激活应用程序时会传递给应用
当type属性取text时,就是一个普通的输入框,用户能够在input节点中键入信息,应用程序可以对用户的输入进行响应,如短信的快捷回复。placeHolderContent属性设置占位文本
当type属性取selection时,是一个下拉选择框。defaultInput表示默认选择的项
8、action 节点
可以简单理解为就是一个button,通过此节点开发者能在toast通知内部指定3个自定义或系统行为。content属性表示显示的文本,imageUrl表示按钮上的图标,如果不需要就可以不做设置,arguments属性表示的是当激活应用时传入的参数,activationType表示激活应用的类型是前台还是后台,如果值为foreground,表明toast通知将在前台激活应用,这时候用户可以看见应用程序;如果值为background,表明toast通知通过后台方式激活应用,此时用户看不到应用程序,后台激活必须指定一个后台任务,当激活时就会执行后台任务。如果值为protocol,表示将通过协议来激活应用程序。这在后面的内容会做详细讲解。
9、声音节点 Audio
在UWP中,audio节点内容和WP8.1版本保持不变。移动设备能通过ms-appx和ms-appdata自定义声音,但是桌面版不行。其二者都可以使用ms-winsoundevent
详细的可以查阅MSDN帮助文档:https://msdn.microsoft.com/en-us/library/windows/apps/br230842.aspx
有了Toast的XML模板,就可以如下代码实现Toast通知
string xml = "****"; // 创建并加载XML文档 XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); // 创建通知实例 ToastNotification notification = new ToastNotification(doc); // 显示通知 ToastNotifier nt = ToastNotificationManager.CreateToastNotifier(); nt.Show(notification);
其中xml字符串表示的就是上面讲解的Toast通知模板
下面通过几个简单的示例来加深理解,同时为了节省篇幅,示例只给出了xml字符串的不同,其他操作都是一样的
1、(最简单的)
string xml = "<toast>" + "<visual>" + "<binding template=\"ToastGeneric\">" + "<text>Title</text>" + "<text>Content</text>" + "<image placement=\"inline\" src=\"ms-appx:///Assets/1.jpg\" />" + "</binding>" + "</visual>" + "</toast>";
2、image的placement属性使用
string xml = "<toast>" + "<visual>" + "<binding template=\"ToastGeneric\">" + "<text>Title</text>" + "<text>Content</text>" + "<image placement=\"inline\" src=\"ms-appx:///Assets/1.jpg\" />" + "<image placement=\"appLogoOverride\" src=\"ms-appx:///Assets/2.jpg\" />" + "</binding>" + "</visual>" + "</toast>";
3、actions属性
string xml = "<toast>" + "<visual>" + "<binding template=\"ToastGeneric\">" + "<text>Title</text>" + "</binding>" + "</visual>" + "<actions>" + "<input id=\"select\" type=\"selection\" defaultInput=\"2\">" + "<selection id =\"1\" content = \"selection1\" />" + "<selection id =\"2\" content = \"selection2\" />" + "</input>" + "<input id=\"name\" type=\"text\" placeHolderContent=\"请输入姓名\" />" + "<action content = \"确定\" arguments = \"ok\" activationType=\"foreground\" imageUri=\"ms-appx:///Assets/1.jpg\"/>" + "<action content = \"取消\" arguments = \"cancel\" />" + "</actions >" + "</toast>";
4、reminder类型的通知
string xml = "<toast scenario=\"reminder\">" + "<visual>" + "<binding template=\"ToastGeneric\">" + "<text>Title</text>" + "<image placement=\"inline\" src=\"ms-appx:///Assets/1.jpg\" />" + "</binding>" + "</visual>" + "</toast>";通过设置scenario="reminder"来实现提醒reminder通知,这时候图片会放大填充到整个toast通知的宽度。
关于Toast通知的激活应用的内容,将在下一篇博文中做讲解。
帮助文档:
Toast schema:
https://msdn.microsoft.com/en-us/library/windows/apps/br230849.aspx