目录

说明

之前网上有人建议增加磁贴(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。

开源有益,多谢点赞!

【完全开源】知乎日报UWP版:增加Live磁贴、Badge、以及Toast通知的更多相关文章

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

    目录 说明 功能 截图+视频 关于源码和声明 说明 陆陆续续大概花了一个月的时间,APP算是基本完成了.12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我 ...

  2. 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释

    目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...

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

    目录 说明 使用Fiddler分析android版API 部分效果图 关于源码 说明 在做博客园UWP版的时候其实就有做知乎日报的打算了,前段时间一直出差,在酒店里用Fiddler简单的分析了一下An ...

  4. 【开源】知乎日报UWP 更新

    说明 大概十天之前我更新了一次APP,后来又仔细看了一下Store里的评论,发现还有几个地方没有改过来.于是前天晚上抽时间改了一下,顺便完善了一下UI体验. 没有看前面文章的童鞋可以看一下下面的链接: ...

  5. 知乎日报win10版 - 天天读报【开源】

    业余时间写的一个知乎日报win10版客户端,支持收藏,评论,点赞等. 商店地址:https://www.microsoft.com/zh-cn/store/apps/%E5%A4%A9%E5%A4%A ...

  6. 必应词典UWP版-开发小结

    摘要 必应词典UWP版已经上线2周了!相信有不少用户都已经体验过了吧!得益于Win10全新.强大的API,新版词典在性能上.UI体验上都有了大幅的提升,今天,小编就为大家讲讲必应词典UWP开发的故事. ...

  7. Win10通用程序 UWP版HtmlAgilityPack UWP应用使用示例

    Win10 UWP版HtmlAgilityPack,UWP应用使用示例下载. Win10 发布了一个多星期,sdk是随着一起发布的,我安装好vs2015和sdk 开发UWP 通用程序. 在做网络解析的 ...

  8. React-Native运行知乎日报遇到的问题

    研究几天RN(React-Native)后,跟着官方的demo做了一下电影图片显示的那个,但是总感觉官方的demo欠缺点什么,所以找来找去找到了RN版的知乎日报,话说知乎日报什么版的都有,不信你们上网 ...

  9. 一个知乎日报pwa

    前几天写了一篇文章关于如何实现一个简单版的pwa应用,端午撸了一个简易版知乎日报pwa. 关于如何写一个pwa,这里就不多介绍了,请移步这里.应用使用vue+vuex+axios,API这里,这里做了 ...

随机推荐

  1. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  2. Fis3的前端工程化之路[三大特性篇之内容嵌入]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  3. 【AR实验室】ARToolKit之制作自己的Marker/NFT

    0x00 - 前言 看过example后,就会想自己动动手,这里改改那里修修.我们先试着添加自己喜欢的marker/nft进行识别. 比如我做了一个法拉利的marker: 还有网上找了一个法拉利log ...

  4. 干货分享:让你分分钟学会 JS 闭包

    闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...

  5. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  6. 记录我这一年的技术之路(nodejs纯干货)

    2015年12月28日23:19:54 更新koa应用.学习型网站和开发者工具等 coding伊始 开始认认真真的学习技术还是2015.10.21日开始的,记得很清楚,那天,是我在龙湖正式学习的第一天 ...

  7. java springMVC SSM 操作日志 4级别联动 文件管理 头像编辑 shiro redis

    A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:313596790freemaker模版技术 ,0个代码不用写 ...

  8. Android—基于微信开放平台v3SDK,开发微信支付填坑。

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...

  9. vim的一些常用命令(一)

    先确认在Normal模式下,如不确认,请按几次Esc. :sy on/clear sy表示语法高亮,on是打开.clear是取消. :set go= set表示一般性设置,go是gui option的 ...

  10. Windows cmd 长时间不输出新内容 直到按下ctrl + c 取消或者回车的解决办法

    换了一台新电脑, 在使用 ant 拷贝大量文件的时候 cmd 窗口过了很久没有继续输出新的内容,远远超过平时的耗时, 以为已经卡死 按下 ctrl + c 取消, 这时并没有取消, 而是输出了新内容, ...