Notification使用指导与规范(原理篇)

来源:互联网 发布:女性生殖健康 知乎 编辑:程序博客网 时间:2024/04/30 15:37

Notificaiton作用


Notification系统允许用户及时了解app中与具体事件相关的和及时的事件,例如来自朋友的聊天信息或是日历活动。试想notifications作为一个新闻频道,当用户没注意手机的时候,提醒用户重要的活动和日记记住的事件,还有一件要做的事情是在他们所有安卓设备适当的同步信息。

Notification在android 5.0 更新内容(在结构上,视觉上和功能上)


1.Notification视觉上的变化与材料设计主题相一致;
2.Notification现在在设备锁屏的情况下也可以看见,而敏感的内容仍然可以隐藏,不让他出现在锁屏情况下;
3.当设备正在使用时,收到的高优先级通知,现在可使用一个叫做抬头式(heads_up)通知的新格式;
4.云同步通知,当你正在你的安卓设备驳回一个通知,其他的设备也同样被一起驳回。就像微信的撤回功能的表现形式差不多。

Key:新版本的Notification和以前版本的notification有本质上的区别。

Notification的基本结构

现在开始分析一下Notification的一些基本内容

Base layout(基本布局)

最简洁的Notification由base layout组成,包括:


1.通知的图标。这个图标象征着源程序。如果应用程序生成多个类型,也仍然可能指示通知类型;
2.一个通知标题和额外的文本信息;
3.一个timeStamp,代表具体通知时间。

右边是穿戴式设备的视图

右边是穿戴式设备的视图

旧版本Notification.Builder创建的Notification与安卓5.0上工作原理相似,但风格上的有一点变化。

Expanded layouts(拓展布局)

你可以决定你的应用程序的Notification提供多少详细信息:


1.你可以只展示一行,也可以展示它拓展后更大的图像预览。额外的信息为用户提供了更多的上下文,并且在某些情况下可以允许用户完整地读取消息。
2.用户可以捏缩放或执行单手指滑行在紧凑(Compact)和拓展(Expanded)布局中切换。对于单个事件通知,Android提供了三个扩展的布局模板(TEXT、INBOX和IMAGE)供您在应用程序中使用,如下:



Actions(动作)


Android支持在通知底部显示可选操作。有了这些actions,用户可以为一个特定的通知处理的最常见的任务,通过具体通知内容,而无需打开原始应用程序。这增强了互动,并结合swipe-to-dismiss(滑动消去通知操作),帮助用户专注于通知的内容。
注意点:
1.明智的在应用程序的Notification中添加actions,其中包含的acitons越多,复杂性就越高。尽可能限制自己少添加的actions,仅仅包含最迫切的重要和最有意义的actions;
2.最多可以指定三个actions,每个动作都由一个动作图标和名称组成;添加actions到简单的base layout 使notification可将布局拓展,即使notificaiton没有拓展的布局。由于操作只显示在扩展的通知,其他时候是隐藏的;还要确保用户可以从通知中调用的任何操作都可以从关联的应用程序中获得。

为notification添加actions时的准则:


1.你所显示的内容必须是必须的,频繁的和典型的;
2.允许用户快速的完成操作;
3.避免模棱两可的操作或者和notification的默认操作相同的操作(读和打开)不要添加;

Heads-up Notification(抬头式)

当一个高优先级的notification到达,它在很短的时间内被提交给用户,通过展开的布局尽可能暴露可能的actions;这一段时间后,通知撤退到notification shad。如果通知的优先级标记为 High, Max, or full-screen,它将成为一个抬头式通知。


抬头式布局的好运用:
1.使用设备时来电;
2.使用设备时alarm(闹钟);
3.类似,新的SMS信息;
4.低电量等;

该例子图片是电话打进的时候,因为其拥有高的优先级,将显示在当前正在执行的应用程序的顶部。

使用指南

1.使Notification个人化(make it personal),要清楚的显示该Notification是哪一个人发送过来然后触发的。对于另一个人发过来notification的项(如消息和状态更新),用setlargeicon()设置那一个人的形象,同时附上和这个人相关的通知的元数据信息。

相关知识如下:

设置与个人相关的大图标

public Notification.Builder setLargeIcon (Bitmap b) 新增于API 11

Add a large icon to the notification content view. In the platform template, this image will be shown on the left of the notification view in place of the small icon (which will be placed in a small badge atop the large icon).

为ContentView添加一个大图标,此图像将显示在Notification的左侧,代替小图标(这大图标将被放置在一个小徽章上面)。

附加个人信息

public static final String EXTRA_PEOPLE 新增于API 19

extras key: A String array containing the people that this notification relates to, each of which was supplied to addPerson(String).

包含与notification相关的包含了people的一个字符串数组,用在addPerson方法中

Constant Value: “android.people”
public Notification.Builder addPerson (String uri) 新增于API 21

Add a person that is relevant(相关) to this notification.

这里写图片描述

2.导航到正确的地方(Navigate to the right place)


当用户触摸notification(actions button以外的区域),将打开你的应用程序,用户可以查看和对notification中引用的数据相对应的activity等。在大多数情况下,这将是一个简单数据项的详细视图,例如消息,但是它可能也是一个汇总试图,如果通话堆叠,就像一个人同时发给你很多条微信。如果您的应用程序需要用户在您的应用程序的顶级水平以下,插入导航到您的应用程序的后台堆栈,以便用户可以按系统返回按钮返回到顶级。

3.正确的设置和管理notification的优先级

Android支持通知的优先级标志。此标志允许您设置相对于其他通知影响您的通知出现的位置,并帮助确保用户总是首先看到最重要的通知。

DEFAULT, HIGH, and MAX 是中断性的优先级,能中断用户正在运行的activity。为了避免应用程序的用户感到烦人推荐位以下Notifications 预留中断性的优先级:


1.涉及到另一个人,电话短信等;
2.是时间敏感,微信等聊天软件;
3.可能会立即改变用户在现实世界中的行为,日历之类。

Notification设置为LOW和 MIN仍然是对用户有价值的,大多数情况下,Notification不需要名令用户立即关注或者振动,但其中包含的信息,当他们选择去查看通知的时候用户会发现宝贵的内容。


LOW优先级和MIN优先级通知的标准包括:
1.不要牵扯别人;
2.不是时间敏感;
3.含内容的用户可能感兴趣,但可以在他们休闲的时候选择浏览。

优先级 作用 Max 用于迫切的或紧急通知,提醒用户处于时间紧迫或在问题解决之前,他们不可以继续一个特定的任务。 High 主要用于重要的通信,如消息或聊天活动的内容是用户特别感兴趣。高优先级Notification触发抬头通知显示。 DEFAULT 该优先级和其他四个优先级都不同,当其它优先级不满足的时候,就使用默认级的Notifications LOW 用于希望用户了解的通知但是不太紧急。低优先级的通知往往显示在列表的底部,这使得它们更好的被选择,如公共信息或无向社会更新:虽然用户已要求通知关于它们的信息,但这些通知不应优先于紧急或直接通信。 MIN 使用上下文或背景信息,如天气信息或上下文位置信息。在状态栏中不会出现最小优先级通知。用户发现它们在扩大后的notification 的shade视图里面。

设置notification的category(类别)

如果您的通知属于一个预定义的类别(见下文),需要相应地分配类别。系统的用户界面,如通知阴影(或任何其他的通知监听器)方面可以使用这些信息,使其能更方便地排序和过滤。

类别 描述 CATEGORY_CALL 来电(语音或视频)或类似的同步通信请求 CATEGORY_MESSAGE incoming直接消息(短信、即时消息等)。 CATEGORY_EMAIL 异步成批消息(电子邮件) CATEGORY_EVENT 日历活动 CATEGORY_PROMO 推广或广告 CATEGORY_ALARM 闹钟或定时器 CATEGORY_PROGRESS 长时间后台操作的进程 CATEGORY_SOCIAL 社交网络或共享更新 CATEGORY_ERROR 后台操作或身份验证状态出错 CATEGORY_TRANSPORT 播放的媒体传输控制 CATEGORY_SYSTEM 系统或设备状态更新。系统使用预留。 CATEGORY_SERVICE 指示正在运行的后台服务 CATEGORY_RECOMMENDATION 一个具体的,及时的建议为一件事。例如,一个新闻应用程序可能想推荐一个新闻的故事,它相信用户将要阅读下一则新闻 CATEGORY_STATUS 正在进行的信息关于设备和上下文状态

合并Notifications的信息

如果某个类型的通知在应用程序试图再发送相同类型的新通知时,已经处于等待状态,需要将它合并为应用程序的单个摘要通知。不要创建新对象。


摘要通知生成概要描述,并允许用户了解有多少个某一特定种类的通知正在等待。

不能如下图这样做;

应该这么做:

您可以通过使用扩展摘要布局形成一个summary提供各个通知的详细信息。这种方法允许用户更好地了解哪些通知正在等待,如果它们足够有趣,可以在相关应用程序中详细阅读。

使Notifications optional(可选)

用户总是控制着notifications。允许用户可以将应用程序的notification无效和改变它的弹出提醒配置,例如弹出提醒声音和是否需要振动,你需要通过application改变notification设置项。

使用distinct(明显的) icons

通过浏览通知区域,用户应该能够识别当前正在等待的通知类型。

应该做什么:

1.安卓应用程序应提供和创建的具有不同外观的Notificaton的icons;

2.为小图标使用适当风格的notification icon style ,为action icon使用 Material Light action bar icon style;

3.让你的图标视觉简单,避免过度细节,因为很难辨别。

不应该做什么:

1.使用颜色去帮助区分你的程序和别人的程序。通知图标应该仅仅是白色透明图片;

2.添加任何额外的透明度(调光或褪色)到你的small icons和action icons;他们可以有抗锯齿边缘,但由于Android使用这些图标作为面具(即只有Alpha通道使用),图像一般应被绘制成完全不透明。

例子如下图

适当的使用notification LED灯

许多Android设备包含一个notification LED,就算屏幕关闭也能使用户清楚事件发生。优先级为,MAX,HIGH或DEFAULT的Notification可以使 LED发光。

用户对通知的控制应扩展到LED。当你使用default_lights,LED将亮白。您的通知不应该使用不同的颜色,除非用户已明确定制。

创建一个Notifcaiton用户需要注意的地方如下:

要创建一个用户喜爱的应用程序,重要的是要仔细设计您的通知。通知象征您的应用程序的发言权,并有助于您的应用程序的个性。不必要的或不重要的通知让用户过度的关注会让其厌烦,所以明智地使用通知。

When to display a notification(什么时候显示)

我们需要认识到用户的注意力和焦点是一个需要保护的资源,在设计自己应用程序的Notification系统的时候,应尽量减少用户因关注Notification所遭受的影响。你需要注意,Notification触发的时候会中断用户的任务流。不要打扰用户正在进行的任务,需要给他们通过你的应用程序的Notification设置去调整Notification的优先级。

上图是时间敏感的例子

Notification 主要运用在time-sensitive的events,特别是这些涉及其他人的同步性的时间。例如实时消息和同步的通讯形式;另一个个用户正在等待你的回复。日历时间也是一个使用notification的好例子,因为迫在眉睫的事件需要用户去解决,而这些事件往往涉及另外一些人。

When not to display a notification(什么时候不显示)


(1.)避免通知用户,那些不是为专门为他们准备的信息,或者不是时间敏感的信息。例如,通常社交网络的异步和无向更新一般不保证实时中断。对于那些关心他们的用户,允许他们选择。
(2.)不要创建通知,如果相关的新信息目前在屏幕上。相反,使用应用程序本身的UI在上下文中直接通知用户新信息。例如,聊天应用程序不应该在用户与其他用户正在聊天时创建系统通知。
(3.)低层次的技术操作不打扰用户,像保存或同步信息,或更新一个应用,如果用户不参与应用程序或系统可以解决问题。
(4.)如果用户不采取任何措施,应用程序能够自行从错误中恢复,则不要中断用户通知它们。
(5.)没有真正的通知内容或者宣传你的应用程序,不要创建Notification。通知应提供有用的,及时的,新的信息,不应该仅仅用于启动应用程序。
(6.)不要创建多余的通知只是为了让你的品牌出现在用户面前。这样的通知是无益的,同样会使你的忠实粉丝变少。最佳方法是提供少量的更新信息并开发一个可以在主屏幕放置的控件与你的应用程序取得联系。

此图就是一个错误示范

这里写图片描述

与Notifications的交互


1.通知在状态栏中用图标指示,并且可以通过打开notification drawer来访问。
2.触摸通知打开相关的应用程序与notification相匹配的详细内容。向左或向右滑动通知将它从抽屉里删除。

处于进行状态的Notifications


1.正在进行的通知让用户知道正在后台进行的进程。例如,音乐播放器在Notification system中表明当前播放的曲目,并继续这样做,直到用户停止播放。
2.正在进行的通知也可以显示用户对较长的任务的反馈,如下载文件,或编码视频。用户不能手动从Notification drawer中删除正在进行的notification。

Media playback


在Android5.0中,锁屏不为废弃的RemoteControlClient类显示传输控制。但它确实还显示通知,所以现在每个应用程序的 playback notification是用户控制播放从锁定状态的主要方式。这种行为给应用程序显示的按钮更多的控制,同时提供一致的经验,无论屏幕是否锁定。

Dialogs和Toasts

只在应用程序内创建Toast和dialog。

排序问题

新的Notifications,基本上是按照时间倒序顺序显示,对应用程序声明的notification priority给予特别的考虑。通知是锁屏的一个关键部分,并且每次设备显示时都会突出显示。锁屏上的空间是紧凑的,所以它比以往任何时候都更重要,以确定最紧急或相关的通知。


Android中有一个Notification排序算法考虑到因素:
1.时间戳和应用的优先级;
2.通知最近的声音和振动是否干扰了用户(如果手机发出噪音,用户想知道“刚才发生了什么事?”,锁屏时候也应一目了然。)
3.任何人要给Notification用EXTRA_PEOPLE附加信息,要确认其是否是主要的接触
4.为了更好地利用这个排序,专注于您想要创建的用户体验,而不是针对列表中的任何特定的点。
5.如下图,Gmail notifications的优先级是默认优先级,通常按时间顺序,如果突然消息应用程序突然收到一个消息将显示在上面。

这里写图片描述

锁屏


1.因为通知在锁屏上是可见的,所以用户隐私是一个特别重要的考虑因素。通知通常包含敏感的信息,不应该是任何人拿起设备和打开显示器就能看见的。
2.对于具有安全锁屏(PIN、模式或密码)的设备,该接口具有公共和私有部分。公共接口可以显示在安全的锁屏上,因此任何人都可以看到。私有接口是锁屏后面的世界,只有用户登录到设备后才显示。

用户控制在锁屏上显示的信息


当设置安全锁屏时,用户可以选择从安全锁屏中隐藏敏感细节。在这种情况下,系统UI考虑通知的可视性等级,以找出什么内容可以安全地显示。
调用 Notification.Builder.setVisibility()控制能见度级别。可指定以下的值:
visibility_public 显示通知的全部内容。如果能见度未指定,则为系统默认值。
visibility_private 在锁屏上,显示了此通知存在的基本信息,包括其图标和应用程序的名称。通知的其余部分的详细信息不显示。要遵循的要点如下:
(1)如果你想为系统提供一个不同的公共版本的通知在一个安全的锁屏显示,提供一个交换的通知对象支持在notification.publicversion。
(2)这个设置会让你的应用程序的机会创造一个修订版本,仍然是有用的但不透露个人信息的内容。考虑一个SMS应用程序的例子,其通知包括短信的文本和发件人的姓名和联系人图标。
该通知应visibility_private,但publicversion仍可能包含像“3条新消息”,没有任何其他有用的信息,识别的细节。
notification.visibility_secret 只显示最少量的信息,甚至不包括通知的图标。

这里写图片描述

由于时间缘故,Notification(使用方法篇)明后两天奉上

0 0
原创粉丝点击