Android 通知简介
1. 基本通知
图1: 基本通知详情
- 小图标 : 必须提供,通过 setSmallIcon( ) 进行设置.
- 应用名称 : 由系统提供.
- 时间戳 : 由系统提供,也可隐藏时间.
- 大图标(可选) : 可选内容(通常仅用于联系人照片,请勿将其用于应用图标),通过setLargeIcon( ) 进行设置.
- 标题 : 可选内容,通过 setContentTitle( ) 进行设置.
- 正文文本 : 可选内容,通过 setContentText( ) 进行设置.
2. 通知操作
尽管并非强制要求,但每个通知都应在用户点按时打开相应的应用 Activity。除了这种默认的通知操作之外,还可以添加可在通知中完成与应用相关任务的操作按钮(通常不需要打开 Activity),一个通知最多可以提供三个操作按钮供用户快速相应通知.
图2: 带有一个个操作按钮的通知
图3: 点击 “ REPLY ” 按钮会打开文本输入框
参考: 在Android 10 (API级别29)和更高版本中,如果应用不提供自己的通知操作按钮,则系统会自动生成通知操作按钮.
3. 通知模板
(1) 标准模板
标准模板适用于大多数通知,它允许使用简洁文本、大图标和操作。
图4: 标准通知模板
(2) 大文本模板 (BigTextStyle)
默认情况下,通知的文字内容会被截断以放在一行。如果需要长一些的通知,可以通过应用该模板启用更大的展开式文本区域。
图5: 大文本模板的通知
(3) 大图模板 (BigPictureStyle)
大图模板专为包含图片的通知而设计。收起后,通知将显示图片的大图标缩略图。展开后,通知会显示更大的预览。
图6: 大图模板的通知
(4) 进度模板
进度模板专为用户发起的需要时间才能完成的活动而设计。展开后,使用此模板的通知会显示进度条,并且还会包含“取消”操作,以便用户终止此 activity。(不可取消的活动不要求发送通知。)
图7: 进度模板
(5) 媒体模板 (MediaStyle)
媒体模板旨在让用户能够控制当前从应用中播放的媒体。
- 收起时,通知最多可以显示三项操作。大图标可以显示相关图片,例如专辑封面。
- 展开时,通知会显示最多 5 个操作(使用较大的图片)或 6 个操作(不带图片)。通知的背景和其他元素会自动继承图片的颜色。
图8: 媒体模板
(6) 消息模板 (MessagingStyle)
消息模板专为实时通信而设计。展开后,使用此模板的通知可让用户在通知中回复消息。
图9: 消息模板
(7) 通话模板 (CallStyle)
通话模板生成大格式通知,其中包含大图片附件并指示来电或去电。
图10: 通话模板
4. 抽屉式通知栏
Android 中的抽屉式通知栏通常按时间倒序显示通知,并受到以下条件的影响:
- 应用声明的通知优先级或重要性
- 通知最近是否通过提示音或振动提醒用户
- 通知是否与任何人相关,这些人是不是已加星标的联系人
- 通知是否表示重要的持续性活动(例如正在进行的通话或正在播放音乐)
- Android 操作系统通过在列表顶部和底部添加强调效果来改变某些通知的外观,帮助用户扫描内容
图11: 抽屉式通知栏中的通知
5. 处理过时通知
抽屉式通知栏旨在向用户显示与当前时刻相关的信息。如果早前的通知已经过时,即不再相关,可将其关闭,这样用户就看不到该通知。
图12: 刚收到的文本显示在抽屉式通知栏中,并在底部显示优先级较低的通知
6. 提醒式屏幕
从 Android 5.0 开始,通知可以短暂地显示在浮动窗口中,称之为提醒式通知。这种行为通常适用于用户应立即知晓的重要通知,而且仅在设备未锁定时才会显示。
图13: 显示在前台应用前面的提醒式通知
提醒式通知会在应用发出通知后立即出现,稍后便会消失,但仍照常显示在抽屉式通知栏中。使用场景如下:
- 用户的 Activity 处于全屏模式(应用使用 fullScreenIntent)。
- 通知的优先级很高,且在搭载 Android 7.1(API 级别 25)及更低版本的设备上使用铃声或振动。
- 在搭载 Android 8.0(API 级别 26)及更高版本的设备上,通知渠道的重要程度比较高。
7. 锁定屏幕
从 Android 5.0 开始,通知可以显示在锁定屏幕上。
可以采用编程方式设置应用在安全锁定屏幕上所发布通知的详情可见等级,甚至可以设置通知是否显示在锁定屏幕上。
用户可以通过系统设置来选择锁定屏幕通知的详情可见等级,包括选择停用所有锁定屏幕通知。从 Android 8.0 开始,用户可以选择停用或启用各个通知渠道的锁定屏幕通知。
图14: 锁定屏幕上已隐藏敏感内容的通知
(1) 设置锁定屏幕公开范围 : setVisibility( )
- VISIBILITY_PUBLIC : 显示通知的完整内容。
- VISIBILITY_SECRET : 不在锁定屏幕上显示该通知的任何部分。
- VISIBILITY_PRIVATE : 显示基本信息,例如通知图标和内容标题,但隐藏通知的完成内容。
当设置 VISIBILITY_PRIVATE时,可以提供通知内容的备用版本,以隐藏特定详细信息。例如,短信应用可能会显示一条通知,提示“您有1条新短信”,但是隐藏了短信内容和发件人。
图15: 不同隐私级别的锁屏通知
8. 提醒式通知
从 Android 5.0 开始,通知可以短暂地显示在浮动窗口中,称之为提醒式通知。这种行为通常适用于用户应立即知晓的重要通知,而且仅在设备未锁定时才会显示。
图16: 显示在前台应用前面的提醒式通知
提醒式通知会在应用发出通知后立即出现,稍后便会消失,但仍照常显示在抽屉式通知栏中。
例如,以下情况可能会触发提醒式通知:
- 用户的 Activity 处于全屏模式(应用使用fullScreenIntent)。
- 通知的优先级很高,且在搭载 Android 7.1(API 级别 25)及更低版本的设备上使用铃声或振动。
- 在搭载 Android 8.0(API 级别 26)及更高版本的设备上,通知渠道的重要程度比较高。
9. 显示紧急消息
显示紧急的时效性消息,例如来电或响铃警报。在这些情况下,可以将全屏 Intent 与通知关联。调用通知时,根据设备的锁定状态,用户会看到以下情况之一:
- 如果用户设备被锁定,会显示全屏 Activity,覆盖锁屏。
- 如果用户设备处于解锁状态,通知以展开形式显示,其中包含用于处理或关闭通知的选项。
参考 : 包含全屏Intent的通知有很强的干扰性,因此这类通知只能用于最紧急的时效性通知。
10. 通知更新和分组
将这些孤立的通知分为一组(可在搭载 Android 7.0 及更高版本的设备上这样做)。借助通知组,可以以一条摘要的形式在抽屉式通知栏中将多个通知收拢成一条通知消息。用户便可以展开通知以查看每个通知的详情。
用户可以逐级展开通知组以及其中的每条通知以查看详情。
图12: 分组通知收起和展开的视图
参考:如果同一个应用发出4条或更多通知且未指定分组,系统会自动将这些通知分为一组。
11. 通知的重要程度
Android 利用通知的重要程度来决定通知应在多大程度上干扰用户(视觉上和听觉上)。通知的重要程度越高,干扰程度就越高。
在搭载 Android 8.0(API 级别 26)及更高版本的设备上,通知的重要程度由通知发布到的渠道的 importance决定。用户可以在系统设置中更改通知渠道的重要程度。
在搭载 Android 7.1(API 级别 25)及更低版本的设备上,每条通知的重要程度均由通知的 priority 决定。
图12: 渠道重要性级别
12. 设置系统范围的类别
Android 使用一些预定义的系统范围类别来确定在用户启用勿扰模式后是否发出指定通知来干扰客户(例如:CATEGORY_ALARM、CATEGORY_REMINDER、CATEGORY_EVENT或CATEGORY_CALL等)。