Windows Phone 8.1锁屏通知 关键词

badge—–百度翻译给的解释如下

徽章,像章,奖章; 象征,标记; [美国俚语]警察;

以…为标志; 使佩带像章(或徽章、标记); 给予…标记(或徽号); 授予…奖章(或徽章);

总的来说呢,锁屏通知就是应用自身的一个信息标记,可以是数字也可以是字形标记。用来干嘛的呢,就是给我们用

户一个醒目的感觉,提醒我们某个应用的内容更新了

在手机上常见的显示形式是应用磁贴右上角的数字或者字形提示,还有就是锁屏时候的锁屏界面的徽章和图块文本通

知,以图为证:

数字都可以理解,字形呢就指右上角对应的

(alert)和

(attention)

要实现以上功能呢,当然代码肯定是少不了写的了,但是代码之前一是要熟悉一些配置的问题,并且认识核心类

首先,当我代码都吭哧吭哧的写好之后,发现为什么锁屏中没有出现应用的效果呢,这是因为你没配置清单文件和手

机自带的设置,具体如下:

1.程序的清单文件Package.appxmanifest->应用程序->锁定屏幕通知->徽章和图块文本,有图有真相:

2.程序的清单文件Package.appxmanifest->可见资产->徽章徽标->然后自己选择提前准备好的图片即可(注意上面的

尺寸要求),有图有真相:

你不必把3个图片都整上去,可以只整一个即可,因为最终总是显示的那么小,当然也可以自己分别尝试一下这3个,

看看差异如何。

3.在调试的时候,不管在实体机上还是调试模拟机上,都要在设置里面不要把锁屏时间设置为无,要不然模拟机上锁

不了屏,那就看不了锁屏效果喽,我一般设置30秒,让它尽快锁屏,这样就能看到效果了。当然实体机上装了锁屏软

件的直接一键锁屏也可以。

设置->锁屏界面->屏幕超时->设置成30秒

同时呢,在锁屏界面设置中有一项通知,通知里面有一项选择应用以显示即时状态,点“+”号将自己写的那个应用

加进去。有图有真相:

注意第三个“+”号,经过选择选择应用之后就被应用图标填充了。(我这边示例应用叫Reminder)

配置完了,其次就要认识核心类了,主要用到了BadgeUpdateManager和BadgeNotification这两个类。

其实,涉及到通知,这边一般都是采用的XML的模板。整个通知结构就可以看做是一个XML结构树。

MSDN的BadgeUpdateManager解释:BadgeUpdateManager class

MSDN的BadgeNotification解释:BadgeNotification class

另外的XmlDocument和XmlElement也需要了解一下

XmlDocument:XmlDocument 类

XmlElement:XmlElement 类

好了,伪代码贴出来:

public sealed partial class MainPage : Page{int i = 1;public MainPage(){this.InitializeComponent();this.NavigationCacheMode = NavigationCacheMode.Required;//数字XML模板XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);//字形XML模板XmlDocument badgeXml2 = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeGlyph);//设置数字的值为17,如果数字大于99,则表示为99+XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");badgeElement.SetAttribute("value", "17");//设置字形的值(自行分为alert和attention,相关显示图形徽章如开头介绍的那样)XmlElement badgeElement2 = (XmlElement)badgeXml2.SelectSingleNode("/badge");badgeElement2.SetAttribute("value", "alert");//badgeElement2.SetAttribute("value", "attention");//创建锁屏提醒通知BadgeNotification badge = new BadgeNotification(badgeXml);//将锁屏提醒通知发送到锁屏 BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);//DispatcherTimer timer = new DispatcherTimer();//timer.Interval = new TimeSpan(0,0,3);//timer.Tick += timer_Tick;//timer.Start();}//void timer_Tick(object sender, object e)//{// XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);// XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");// badgeElement.SetAttribute("value", i.ToString());// BadgeNotification badge = new BadgeNotification(badgeXml);// BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);// i++;//}运行一下即可,就能出现一开始我所描述的效果了。

这只是静态指定的,但是一般这种需求都是要涉及到后台任务的,应用一旦有内容更新,通过后台进行提醒通知的。

关于后台任务,我的博客中也有:Windows Phone 8.1后台任务

其实上面的代码呢,我也用计时器试试,验证是否在应用打开的情况下(注意应用不要挂起,更不是关闭),屏幕自动

锁屏后,,在锁屏界面上的数字是否会按照计时器的变化而每隔3秒钟增加的,事实上,我试了下,增加是会增加的,

但是效果不是很好,有时候数字停在那边,过一会一下增加的很快。但是结果还是会增加的。

还有就是应用挂起和应用关闭后还会显示吗,答案是会显示的,不过那就真正是静态的了。除非你卸载掉应用,要不

然是一直会有锁屏通知的。你可以这样理解,就是应用打开的时候就给了手机一个锁屏通知,然后就撒手不管了,让

锁屏显示去吧。不管之后应用程序挂起了还是被杀死了,锁屏还是接管着这个通知。但是之后你再一次打开应用的时

候,应用会再次发一次锁屏通知,前面的通知就没有意义了,也可以说是过时了。之后应用依旧不管它了。

大家可以多试试,按照自己的想法或者奇妙的点子多去尝试下。

実に おもしろい

而开始追寻他内心世界的真正财富

Windows Phone 8.1锁屏通知 关键词

相关文章:

你感兴趣的文章:

标签云: