在以前8.1时候的Toast通知方式,到了Win 10中依然支持,而且UWP API中也包括了对应的API协定。所以,你仍然可以使用8.1的通知方式,即通过ToastNotificationManager.GetTemplateContent(ToastTemplateType)方法来获取对应的通知模板,然后用XmlDocument对象来加载和修改XML,当然你也可以直接构造XML文档,然后用XmlDocument对象来加载。
还有就是操作中心,其实它和Toast是一伙的,即我们不需要用专门的API去操作它,因为Toast通知本身就可以显示在操作中心里面。
到了Win10 app,Toast通知的模板不再划分为N多种,而只有一种,统一命名为ToastGeneric,也就是通用型通知,这种新的Toast通知也称Adaptive Toast通知,就翻译为自适应吧。
整个XML文档的结构如下:
<toast>
<visual>
<binding>
<text>.....</text>
........
<image ... />
........
</binding>
</visual>
<audio />
<actions>
<input >
然后打开通知中心,会看到该通知,点击通知下方的“向下”箭头,可以看到通知的全部内容。
如果通知显示不出来,请检查设置里面是否开启应用通知。如下图。
想不想看看在手机上运行如何?
打开手机的通知中心,也可以看到刚才的通知。
下面看看纯文本的Toast通知。
string xml = "<toast lang=\"zh-CN\">" +
"<visual>" +
"<binding template=\"ToastGeneric\">" +
"<text>来两句</text>" +
"<text>风声,雨声,读书声,声声入耳</text>" +
"<text>国事,家事,天下事,事事关心</text>" +
"</binding>" +
"</visual>" +
"</toast>";
// 创建XML文档
XmlDocument doc = new XmlDocument();
// 加载XML
doc.LoadXml(xml);
// 创建通知实例
ToastNotification notification = new ToastNotification(doc);
// 显示通知
ToastNotifier nt = ToastNotificationManager.CreateToastNotifier();
nt.Show(notification);
通知效果如下。
深入浅出WP8.1(Runtime)]Toast通知讲解
9.1 Toast通知
Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机的顶端弹出的消息就是Toast通知,点击该通知你可以直接进入短信的详情页面,通知显示的时间是7秒钟,7秒钟后会自动消失,如果你想快速关闭通知,可以采用在Toast通知上面向右滑动的手势便可以快速地关闭掉当前的Toast通知。除了系统使用这样的Toast通知之外,第三方的应用程序也是可以使用这种通知的形式,Toast通知不仅仅可以在打开应用程序的时候弹出,也可以在应用程序关闭的情况进行定时通知或者推送通知来进行发送,这也是Toast通知的最大的魅力所在。Toast通知只应该用于用户特别感兴趣的信息,通常涉及某种形式的用户选择。因此,收到IM聊天请求和用户选择接收的信息都是不错的选择。但是,当你考虑使用Toast通知时,你必须认识到非常重要的一点,由于它的短暂性或由于用户设置,用户可能错过而未看到它。Toast通知专为与锁屏提醒、磁贴通知及应用中UI结合使用而设计,旨在让用户即时了解你应用中的相关事件或项目。Toast通知的实现还会分为两种形式,一种是在应用程序本地实现,另外一种是在云端实现,进行推送,那么我们这一小节主要是讲解在应用程序本地实现的Toast通知,在云端实现的Toast通知,可以参考第12章推送通知的内容讲解。
9.1.1 创建一个通知消息
你的应用要想通过Toast通知通信,必须在应用的清单文件Package.appxmanifest中声明它支持 Toast,否调用Toast通知相关的API将不会生效。在Package.appxmanifest的可视化界面中,找到“Application”->“Notifications”->“Toast capable”,然后设置为“Yes”。打开Package.appxmanifest的代码视图文件,可以看到m3:VisualElements元素的ToastCapable属性设置为true,代码如下所示:
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="ToastDemo.App">
<m3:VisualElements …… ToastCapable="true">
……
</m3:VisualElements>
</Application>
添加了Toast通知的权限之后,我们来看一段创建Toast通知并弹出的代码示例:
// 获取Tosat通知的模板
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText01);
// 找到模板中“'text'”元素,然后添加通知的内容
XmlNodeList elements = toastXml.GetElementsByTagName("text");
elements[0].AppendChild(toastXml.CreateTextNode("A sample toast"));
// 通过通知的模板创建一个Toast通知
ToastNotification toast = new ToastNotification(toastXml);
// 弹出通知
ToastNotificationManager.CreateToastNotifier().Show(toast);
下面我们再根据上面的代码来一步步地都讲解Toast通知的编程步骤:
(1)Toast通知的模板
每个Toast通知的格式都会对应着一个XML的模板,在我们创建一个Toast通知对象之前,我们首先需要选择Toast通知的模板。Toast通知的模板由ToastTemplateType来进行描述,可以通过Toast通知管理类ToastNotificationManager类的静态方法GetTemplateContent来获取对应的Toast通知模板。在Windows Phone的应用程序里面主要会用到ToastImageAndText01和ToastImageAndText02这两种类型的模板。
1)ToastText01模板表示是一个最简单的Toast通知模板,只有通知的内容信息,它的XML格式如下所示:
<toast>
<visual>
<binding template="ToastText01">
<text ;
ToastNotificationManager.CreateToastNotifier().AddToSchedule(recurringToast);
}