【完全开源】知乎日报UWP版:增加Live磁贴、Badge、以及Toast通知

简介:

目录

 

说明

之前网上有人建议增加磁贴(tile)、徽章(badge)功能。利用周末的时间,将这两个功能添加上去了。如果将磁贴固定到开始屏幕,磁贴就会循环播放首页5条“头条文章”所包含的的图片及标题,并且会显示还未阅读的条数(badge)。另外,当用户点亮屏幕,后台任务自动执行刷新首页数据,如果有新的“头条文章”,便会向用户发送Toast通知。下面是效果图:

  

  

 

背景了解

【完全开源】知乎日报UWP(上篇):界面设计、官方API分析。

【完全开源】知乎日报UWP(下篇):商店APP、github源码。Windows APP良心出品。

github源码

商店APP(写这篇文章的时候,最新版还没有审核完毕)

 

注:点击通知,只能唤醒APP主界面,并不能跳转到指定页面(该功能后期完善)。

 

实现方法

实现方法其实很简单,主要用到了“后台任务”(后面会讲到),当用户点亮屏幕时,会触发后台任务,后台任务刷新数据,更新磁贴、badge以及看情况是否发送通知:

  • 点亮屏幕(可以设置成每隔30分钟、1小时);
  • 请求数据;
  • 更新磁贴。将头条文章的图片、标题update到tile中(注意这里是指定tile更新计划:ScheduledTileNotification);
  • 更新badge。如果头条文章有未阅读的,则将未阅读条数更新到Badge;
  • 显示Toast通知。如果有未阅读的文章并且还未曾向用户提醒,那么发出Toast通知。

具体实现:

1.指定tile更新计划:

2.更新badge:

3.显示toast通知:

 

用到的库:

NotificationsExtensions

主要用来操作显示tile、badge以及toast的xml,如果不用它的话,那么我们需要使用XmlDocument来手动构建xml(很麻烦),使用NotificationsExtensions的话,写代码时带智能提示,比如提示你使用到的tile模板需要两个text、一个image等等。

 

APP生命期

其实这块本来想单独写一篇文章的,只是光前面的内容感觉凑不齐一篇文章。

移动设备有很多资源限制,比如内存、存储、电量等,它不同于传统PC等设备,可以24小时插上交流电源,日夜工作不关机、不关屏幕,移动设备显然做不到这样。既然它存在短板,那么设备中运行的软件也必须做出让步(妥协)。怎样妥协呢?就是让你的APP代码大部分时间不运行。是的,没错,你手机APP的代码运行时间只占一小部分。

传统桌面软件运行状态:

APP运行状态:

如上图所示,APP的状态有三个。只有当APP界面处于手机屏幕最前端时,它才处于Runing状态,其余时间要么是Suspended(或即将进入Suspended)状态、要么就是没运行(Not Runing)。APP运行机制只有设置成这样才会避免移动设备的短板,因为它只要不运行就能够相对性地节约资源啊。

那么现在有一个问题,男刀系统中真的同一时间只能运行一个APP吗?如果是这样,那么大部分APP怎样完成一些实时功能呢?比如怎样接收短信、怎样接收QQ消息?不可能让QQ APP一直处于手机屏幕最前端吧?万一屏幕关闭了呢?为了解决这个问题,Windows 10(Mobile)中引入了“后台任务”的概念,即使APP没有运行(not running或者suspended),后台任务还是可以运行的,也就是说它的运行不受APP运行状态的影响。

 

后台任务

什么是后台任务?说白了,后台任务就是一个被系统回调的代码块,当系统满足某个条件时自动调用,而这完全不受APP本身运行状态的影响(哪怕APP都没有启动过)。

有了后台任务,我们就能开发出具备实时功能的APP了,首先向系统注册一个后台任务,给定后台任务执行的条件,这样就OK了。下次不管APP本身状态如何,一旦条件满足(比如收到QQ消息),后台任务立即执行。

(请忽略图中手机)

 

使用后台任务步骤:

  • 检查系统中是否已存在该后台任务,若否;
  • 创建后台任务;
  • 指定后台任务入口;
  • 指定后台任务触发器(回调的条件);
  • 向系统注册。

之后就OK了。需要注意的是,注册前必须检查是否已经存在、后台任务的定义(入口)必须放在一个单独的Windows Runtime Component项目中。

后台任务和APP本身可以被看做是两个相互独立的Process,所以他们之间的数据交互最好通过永久性存储介质(比如文件)来传递,具体内容这篇文章不讲了。关于后台任务的内容可以看MSDN。后面如果有计划再细说。

特殊提示:

在Windows 10开发中,我们要充分利用Tile(磁贴)、Badge(徽章)以及Toast 通知,这些东西是诱导用户打开APP查看信息的主要方式。因为一个APP可能被用户遗忘了从来不会处于手机屏幕的最前端,我们只能通过后台任务接收一些推送信息、实现一些实时功能,然后再通过tile、badge以及toast的方式诱导用户打开app。

 

开源有益,多谢点赞!

 

作者:周见智 
出处:http://www.cnblogs.com/xiaozhi_5638/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类:  UWP

本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5120575.html,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
前端开发 iOS开发 MacOS
vscode自动跟随Mac或window系统系统切换主题色-白天用亮色主题、晚上用暗黑主题
vscode自动跟随Mac或window系统系统切换主题色-白天用亮色主题、晚上用暗黑主题
96 0
|
7月前
|
Web App开发 前端开发 JavaScript
使用 Busy Dialog 动画阻止 SAP UI5 应用按钮短时间内快速被点击试读版
使用 Busy Dialog 动画阻止 SAP UI5 应用按钮短时间内快速被点击试读版
27 0
|
智能硬件
Qt-网易云音乐界面实现-7 消息中心实现,主要是QListWidget 自定义Item 和QTabwidget使用
最近写的有点烦躁, 感觉内容真的很多!很多!很多。 目前真的想知道网易官方在出这款产品是,用了多少人和多长时间。
362 0
Qt-网易云音乐界面实现-7 消息中心实现,主要是QListWidget 自定义Item 和QTabwidget使用
飞流直下的精彩 -- 淘宝UWP中瀑布流列表的实现
原文:飞流直下的精彩 -- 淘宝UWP中瀑布流列表的实现 在淘宝UWP中,搜索结果列表是用户了解宝贝的重要一环,其中的图片效果对吸引用户点击搜索结果,查看宝贝详情有比较大的影响。为此手机淘宝特意在搜索结果列表上采用了2种表现方式:一种就是普通的列表模式,而另一种则是突出宝贝图片的瀑布流模式。
1252 0
|
C# Windows
从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能
原文:从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能 前言 之前在 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记 这篇随笔中介绍了一下 UWP 淘宝的“比较”新功能呱呱坠地的过程。
1114 0
网站上点击自定义按钮发起QQ聊天的解决方案
一、背景   最近由于开发需要,需要在网站上自定义一个立即交谈的按钮,现将解决方式分享给大家。 二、解决方案   1.首先访问:http://shang.qq.com/widget/consult.php,适用需要作为目的QQ的号码进行登陆,然后点击弹出窗口中的"立即免费开通"按钮,进入到如下页面:      2.选择好你想要的组件样式以及提示语,然后copy以下界面中文本框中的代码到你网站的指定位置。
946 0