通知系统的定义
通知系统,顾名思义即通知信息的传达处理系统。目的是为了让用户获得需要得到的消息及提醒并进行处理。 这里的“需要得到”有两层意思1
1、用户彼此互动触发的信息流(留言、评论或者回复、私信等)
2、网站希望用户了解关注的信息(系统公告等)
通知系统设计的原则可简单的归纳为:
1、消息传播效率最高(获取、处理、信息传达、用户反馈等效率)
2、避免产生骚扰(噪音、频繁提示)
通知的几个分类不用的平台和产品本身由于对业务的需求不一样,种类也是有区别的。 大致可分为以下几种:
|| ||
逻辑实现机制通知的逻辑精简后如下:
现对这几个环节分开说明:
通知合并通知在推送之前需要进行汇总合并,目的在于提高消息传播处理效率;减少骚扰,降低噪音;平衡服务器压力。
1)合并周期:
固定时间内的消息全部汇总(24小时内/30天等);
无固定时间(只要未处理/未读即汇总)
当然一般都组合着用:合并24小时内未处理消息
2)分类合并
同种类进行合并(如n条留言合并为1条)
同一发起人合并(如张三给你发来的n条私信)
同一时间周期合并(如24小时共收到n条评论)
通知分发通知按照规则汇总完成后,系统将其通过通知管道推送到用户,以便用户处理。
1)分发方式
分发方式与Feed系统类似,多采用Push方式,即在指定时间内主动推送给用户。部分特定类型需要用户请求(Pull)拉取未读消息。 目前大部分通知优先推送未处理通知合并后的总数,已提醒用户已有新消息需要处理。用户点击数字后再去服务端请求具体的消息内容。此种方式综合考虑了成本、压力和体验。当然,某些极端情况下需要进行优化处理:如未读消息超过1000,用户请求时先推送前50条或者放入cache中等。技术童鞋会有各种手段,这里不做详述。
2)分发频率(时间)
分发时间主要根据消息的优先级来做区隔:
|| ||
3)分发管道
分发管道即消息通知的具体推送渠道,根据业务类型可以分为:Web、App、短信、邮件等
用户处理根据前文提到的分发方式,对于通知的处理在逻辑上可以分为两层:通知状态的处理和通知内容的处理。
1)状态的处理狭义的理解即为是否已读(已处理)。
通常初始数字即为系统推送过来的未读总量,用户点击数字进入相关功能列表查阅后,读取的动作完成,未读数字相应减少。
有几种情况需要变通处理:
若用户未读信息较多(m=100),但第一页列表只能显示(n=10)条的话,那未读数字即为m-n=90;
某些产品会将点击等同于已读。即用户只要点击无论是否打开列表查看均认为已读。 这样的处理一般用于重要级别较低的消息。点击即已读可有效降低骚扰。
某些重要级别较高的消息已处理状态可以定义为用户进行相关操作后才为已处理,而非查阅。 如用户进行评论、回复、点击忽略或点击删除等动作时才认为已处理。
2)内容的处理狭义的理解即为用户是否操作。
根据不同消息的种类和业务的需要,操作可分为:
处理:用户必须点击功能链接进行处理。如:你的密码过于简单,点此进行修改;
回复:如回复私信,对评论进行回复;
确认:对消息做出确认的反馈,如某些系统提示可设置”我已知道,不再提示”的选项;
忽略:用户进行忽略操作或不进行任何操作;
删除:用户删除本消息。
3)消息处理后的状态需要统一。
消息需要标记是否已处理的状态,且状态在不同的终端是打通的。 如:用户在客户端对消息进行了查看,在web站点本消息应自动标记为已读状态。
通知回收回收主要针对用户已处理消息的操作。
用户之间触发的消息一般需要留档保存。 如评论/回复/留言/私信等。产品可提供选项询问用户是否超过一定周期自动清理。
在部分产品中,还需要考虑功能的优先级。 如解除好友关系或加入黑名单后自动将删除双方的私信记录。
系统触发的消息一般设置一定的回收删除时间。 如系统提醒、通知、公告等。过期后自动在产品里删除。物理上可以设置是否备份。
过期但用户未处理消息(用户长时间未登录但收到他人的回复)可以根据业务需求来处理。 如未读的私信/评论/回复永久保留等。重要未读消息可尝试二次推送或使用其他途径(邮箱、APP、短信等)通知。
通知处理交互注:具体的交互需要考虑本身业务特点和目标需求。特定业务可能需要强调,某些业务又需要考虑骚扰,故抛开具体情境本身谈交互是无耻的。 这里只针对一般的社区网站,描述一下个人所喜欢的交互方式。
1)、新消息到达时提醒交互
当新消息到达时,可以使用以下提醒方式
1.标题闪动
2.声音提醒 新消息到达后自动触发声音
3.气泡+数字
4.新消息浮层
5.弹窗提示
2)、通知处理
目前消息多采用当前触发、即时处理类似“所见即所得”的交互方式。 
采用此方式的需要考虑:
消息通知位于全局导航,访问任何频道时都可保证及时收到新消息;
消息在浮层中处理完毕后,用户可继续进行之前的操作,不至于造成打扰;
因导航面积有限,需对消息种类进行统一整理和规划;(Facebook的分类为好友请求、私信、通知。)
提供历史记录(更多、全部消息)的入口(二级页面)
标记已读未读状态,处理好消息提醒数字的关系 
防骚扰(打扰)因消息本身业务性质,过多无用通知势必会造成噪音,打扰到用户。因此合理设置消息的通知频率和渠道,以防早上体验和效率上的损失。
1)、提供通知频率和渠道的管理功能
如常见的邮件退订管理,消息通知类型管理。 
Facebook通知设置

2)、增加屏蔽功能
消息屏蔽功能在业务上应该属于第一条中通知类型管理,当业务模块较多且之前关联分散时,或者开放平台功能接入的第三方应用通知时,可使用屏蔽功能。
facebook应用消息管理
3)、结合权限体系
①、功能隐私设置
使用隐私设置界定具体的接收权限、范围等
微博私信设置
②、结合黑名单功能
使用黑名单可屏蔽指定用户或关键词的具体消息通知。
用户拉回当用户长时间不登陆或对消息不处理时,可使用其他渠道推送通知,已达到拉回的目的。 这个要与网站整体的拉回策略相结合。
iOS通知系统iOS中提供了2种推送通知本地推送通知(Local Notification)2
远程推送通知(Remote Notification)
推送通知的作用可以让不在前台运行的app,告知用户app内部发生了什么事情
推送通知的呈现效果总结
用户接收的推送通知,都会展示在“通知中心”
从屏幕顶部往下滑,就能调出“通知中心”
显示横幅还是UIAlertView,取决于用户的设置
不同的呈现效果在屏幕顶部显示一块横幅(用来显示具体内容)
在屏幕中间弹出一个UIAlertView(用来显示具体内容)
在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)
更新app图标的数字(说明新内容的数量)
播放音效(提醒作用)
使用的几个细节发出推送通知时,如果当前程序正运行在前台,那么推送通知就不会被呈现出来
点击推送通知后,默认会自动打开发出推送通知的app
不管app打开还是关闭,推送通知都能如期发出
桌面通知系统的详细设计及实现设计企业内部通常都有通知需要上传下达,有时是临时通知,3比如通知“下午2点开会”,如果是每个部门电话通知比较烦琐,而仅是通过电子邮件发送,则往往有部分人没有及时地查看而导致错过会议;有时是某个精神需要传达,是一些文本文档;另外一些时候则可能是部门之间交流的内部文件。为了防止员工工作时间闲聊和内部资料外泄,企业外网不开放,公共的即时聊天工具不适合这种场合的使用。而有些情况下,比如非工作时间,企业外网是开放的、允许员工使用的,员工在众多的聊天工具中选择几种是很常见的情况。
桌面通知系统是以企业内部局域网为基础进行设计的。它的目标是在企业内部建立即时通讯平台,方便通知的上传下达,同时对几种常用的公共聊天软件进行集成,使它们有统一的外观、配置,可以减少人们在不同聊天工具之间的切换,并限制公共聊天软件的使用时间段。
主要功能模块UI模块
桌面通知系统客户端,随机器开机而自动起动;它的Ul(用户界面)仿照QQ聊天程序,不使用时,放置于系统托盘位置;若有企业内部消息时,消息窗口自动弹出,并将其设置为最前端窗口,强迫用户阅读并确认后才能够关闭,防止消息没有被及时阅读。
对于服务器端,界面很简单,主要显示出客户端发送消息内容,以及文件传送的时间、位置等信息。
在Eclipse RCP中,所有的一切都是通过扩展点机制实现的,开发RCP的主要过程也就是向应用添加视图、编辑器、透视图、菜单、工具栏、上下文菜单等等的扩展的过程。其中注意遵循模块化原则,按照功能、职责、以及模型和UI分离的原则将系统划分成不同的模块,同时要充分利用Eclipse提供的很多可重用的插件、扩展点、内置的Action、视图、编辑器、首选项等。
消息管理模块
消息分为两类,一是指企业内部发送的消息,二是指集成聊天软件的消息。
企业内部发送的消息,由系统本身进行管理。客户端用户名是部门名,由系统维护部门规定,整个部门的用户名均相同,防止个人利用桌面通知系统聊天。发送消息给某个部门时,该部门所有在线客户端均接收消息。利用Java提供的计时器类,桌面通知系统客户端消息窗口的新内容,每隔10分钟自动存储,减少意外断电的损失。
由于公用即时通讯工具通讯协议各异,软件升级更新周期短,桌面通知系统对于公用即时通讯工具,只是采用了简单的调用方式集成,并未对其内容进行限制和管理,这样可以简化桌面通知系统的实现过程。因此,桌面通知系统中集成的即时通讯工具消息发送,使用聊天软件原有的管理方式,系统并不对其干预,只是对其使用时段进行限制和管理。
文件管理模块
为了减少服务器的负担,加快传输速度,与消息发送不同,客户端的文件发送采用点对点传输。源客户端从服务器获取目的客户端的IP地址,然后启动新文件发送线程发送文件。由于采用了线程方式,文件传送操作不影响客户端针对桌面通知系统的其它操作。
时间管理模块
时间管理模块,主要针对集成的聊天软件上线时间进行管理。在系统维护部门规定工作时间内,除桌面通知系统外其它的即时通讯软件均为灰色,即:不可用状态。
数据管理模块
本系统在服务器端建立了数据库服务。服务器端数据库包括部门信息、管理员权限信息、设置时间段信息、日志管理等方面的内容。由于MySQL5.0免费版亦具有良好稳定的性能,并且安装简单、系统开销少,桌面通知系统利用它完成数据信息管理工作。
安全管理模块
由于桌面通知系统主要针对企业内网使用,所以其安全性相对于公用即时通讯工具具有天然的优势。该系统主要采用客户端权限等级制来实现安全管理,即为不同的客户端设置不同的权限,限制客户端访问消息和文件的权限,以达到保障内部资料安全的目的。