快速构建Windows 8风格应用31-构建磁贴

简介:

 

引言


磁贴是吸引用户经常使用应用重要手段之一。我们可将应用程序内较好的内容使用磁贴进行展示。
另外应用程序磁贴是应用程序中的核心部分,而且很可能也是用户最常见到的部分,因此请好好利用动态磁贴来吸引用户经常使用我们的应用程序!


本篇博文主要介绍如何创建基本磁贴(也就是默认磁贴)以及如何使用本地通知更新磁贴。


一、创建基本磁贴


基本磁贴也可以叫做默认磁贴。通常我们点击基本磁贴来启动或者切换应用。
我们可以在应用程序清单文件中设置默认的静态磁贴,并且该静态磁贴分为两种大小:

注意:这两种大小的磁贴都可以被动态更新。那么我们怎么创建应用中的基本磁贴呢?
1.创建Windows 8 商店应用程序;
2.打开应用清单文件(package.appxmanifest),选择“应用程序 UI”窗口;
3.

  1. 使用自己的徽标图像路径取代默认的图像;
  2. 设置磁贴上显示应用的短名称。注意:该名称不能超过 13 个字符。如果名称太长,将会被截断。当然我们可以选择显示徽标,显示名称或两者都不显示;
  3. 选择名称的文本是使用浅色字体还是深色字体(基于背景色);
  4. 也可设置背景色,该背景色用于对应用的其他部分进行着色,例如:任意应用中对话框的按钮颜色,以及 Windows 应用商店中的“应用详情”页等;

到此为止,我们设置的基本磁贴已经完成,当然我们也可以设置宽徽标、小徽标、应用商店徽标等徽标。


二、本地通知更新磁贴


其实更新磁贴的方式总共有四种(可参考选择通知传递方式),应用程序可使用本地通知来更新其磁贴,这对于正在运行的应用程序且信息发生变更的情形十分有效。
应用程序可在精确的时间点安排磁贴和 Toast 更新。另外应用程序可在未运行时通过云端进行更新磁贴。
那么我们使用本地通知更新磁贴呢?
1.添加命名空间
 


 
 
  1. using Windows.UI.Notifications;  
  2.  using Windows.Data.Xml.Dom; 

其中Windows.UI.Notifications 包含磁贴 API。
2.选取模版并查看XML内容
我们可以使用系统提供的模版TileTemplateType,选择一个适合应用程序的模版。这里以TileWideImageAndText01 模板为例,该模版中需要一个图像和一个文本字符串。


  


 
 
  1. XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImageAndText01); 


其中GetTemplateContent 方法检索一个 XmlDocument,该XML框架如下:
 


 
 
  1. <tile> 
  2.     <visual> 
  3.         <binding template="TileWideImageAndText01"> 
  4.             <image id="1" src=""/> 
  5.             <text id="1"></text> 
  6.         </binding> 
  7.     </visual> 
  8. </tile> 


3.提供相关文本内容


 
 
  1. XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");  
  2. tileTextAttributes[0].InnerText = "你好!测试磁贴更新~"


我们首先需要检索模板中标记名称为“text”的所有元素。TileWideImageAndText01 模板仅包含单个文本字符串,代码接着将分配该字符串。
注意:字符串中最多可以在两行内自动换行,因此应该相应地设置字符串的长度以避免截断。
4.提供图像
我们首先需要检索模板中标记名称为“image”的所有元素。TileWideImageAndText01 模板中包含单个图像。
注意:并非所有磁贴模板都包含图像,某些磁贴模板是仅文本的。


 
 
  1. XmlNodeList tileImageAttributes = tileXml.GetElementsByTagName("image"); 


这里我们可以从应用的程序包中本地图像、应用的本地存储或者Web中获取图像。
注意:在包含多个图像的磁贴通知中,图像可以使用这些图像的任意组合,同时模版中图片大小必须小于200KB,像素小于1024*768。(可参考:磁贴和 Toast 图像大小)

  • 使用应用程序包中本地图像: 

 
 
  1. ((XmlElement)tileImageAttributes[0]).SetAttribute("src""ms-appx:///Assets/WideLogo.png");  
  2. ((XmlElement)tileImageAttributes[0]).SetAttribute("alt""red graphic"); 
  • 使用应用的本地存储图像

 
 
  1. ((XmlElement)tileImageAttributes[0]).SetAttribute("src""ms-appdata:///local/redWide.png");  
  2. (XmlElement)tileImageAttributes[0]).SetAttribute("alt""red graphic"); 
  •   使用Web中图像

 
 
  1. ((XmlElement)tileImageAttributes[0]).SetAttribute("src""http://www.contoso.com/redWide.png");  
  2. ((XmlElement)tileImageAttributes[0]).SetAttribute("alt""red graphic"); 


5.包含一个方形和宽版通知

首先我们在发送通知时,是无法知道当前应用程序的磁贴的状态是方形还是宽版。因此我们在更新通知时同时包括方形和宽版是最佳做法。
使用在宽版通知中使用的文本字符串定义了一个仅文本方形通知:


 
 
  1. XmlDocument squareTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText04);  
  2.  XmlNodeList squareTileTextAttributes = squareTileXml.GetElementsByTagName("text");  
  3. squareTileTextAttributes[0].AppendChild(squareTileXml.CreateTextNode("Hello World! My very own tile notification")); 


然后我们向宽版磁贴的负载添加方形磁贴。检索在方形 TileXml 负载中定义方形磁贴的 binding 元素。作为宽版磁贴的同级附加该 binding 元素。


 
 
  1. IXmlNode node = tileXml.ImportNode(squareTileXml.GetElementsByTagName("binding").Item(0), true);  
  2. ileXml.GetElementsByTagName("visual").Item(0).AppendChild(node); 


6.创建通知
  


 
 
  1. TileNotification tileNotification = new TileNotification(tileXml); 

7.设置通知到期日期
默认情况下,本地磁贴和锁屏提醒不会过期,但是推送通知、定期通知、激活通知会在三天之后过期。通常我们会设置一个合理的过期时间。
注意:磁贴内容的保留时间应不长于内容具有相关性的时间。
 


 
 
  1. tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(10); 


8.发送通知
  


 
 
  1. TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification); 


9.清除磁贴通知
如果我们设置了通知过期时间,就不需要显示调用清除通知的方法。
  


 
 
  1. Windows.UI.Notifications.TileUpdateManager.CreateTileUpdaterForApplication().Clear(); 


注意:我们不能通过云清除通知。
虽然在本地调用 Clear  方法会清除磁贴而不考虑其通知的来源,但是定期通知或推送通知只能将磁贴更新为新内容。
最后实现效果:
方形通知:

 


宽版通知: 
 

 

更多关于磁贴介绍可参考:

 







 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/1098551,如需转载请自行联系原作者


相关文章
|
28天前
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
2月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
50 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
3月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
223 0
|
3月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
62 0
|
5月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
101 0
|
5月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
85 0
|
12天前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
68 9
|
2月前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
|
2月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
下一篇
开通oss服务