桌面应用角标问题Q&A

1.业务逻辑

在应用开启”显示桌面图标角标“权限的前提下,当应用发通知在通知显示后,通知栏会通知桌面更新应用图标角标。角标数值的计算逻辑是,统计应用在通知栏里显示的除媒体通知、进度条通知和常驻通知外的所有通知,累加其messageCount值。每条通知的messageCount值默认为1,开发者可以通过反射的方式设置messageCount值,可参考开发者文档:桌面应用角标适配说明。用户在桌面点击应用图标启动应用时,会同时隐藏掉应用角标。直到应用发送了新通知,或者更新了通知的messageCount值后,才会重新显示出角标。

2.常见问题

2.1.应用发送了通知,桌面应用角标没有显示出来

首先打开应用通知设置页面,在”设置-通知管理“里点击应用,查看”显示桌面图标角标“开关是否开启。大部分应用默认是关闭状态。其次确认通知栏中是否有该应用的通知,当然不包括媒体通知、进度条通知和常驻通知这三种类型通知,因为默认不会统计。 最后需要确认下通知的messageCount值是否正确。

2.2.桌面应用图标显示角标,在最近任务中关闭应用,角标消失

在最近任务关闭应用后,会清除掉应用的所有通知,因此桌面应用角标会隐藏。

2.3.桌面应用图标显示角标,点击应用图标后,角标消失

点击应用图标后,会默认隐藏掉应用图标角标。有如下两种方式可以重新显示:

  • 发一条新的通知,其通知id与之前发送的通知id不重复。
  • 更新已发送通知的messageCount值。

因此,想要应用角标重新显示出来的前提是,应用需要再次发一条通知。

2.4.为什么桌面应用角标最大显示值是9

在通知栏显示的应用发送的通知是有条数限制的,每一个应用最多只能显示10条通知。在应用没有指定groupkey的情况下,超过3条系统会默认发一条autosummary的通知,将应用的通知成组显示。也就是说,在这种情况下,用户可见的通知数量是9条,在桌面显示的应用角标值也是9。开发者可以通过设置通知messageCount值来突破这一限制,详见:桌面应用角标适配说明

2.5.通过开发者文档设置了messageCount值,但桌面应用角标显示的值不符合预期

桌面应用角标数值是累加应用在通知栏显示的除媒体、进度条和常驻通知外的所有通知的messageCount值。即并不是开发者设置了某一条通知的messageCount值后,桌面应用角标显示的就是设置的messageCount值。

2.6.如何查看通知的messageCount值

在命令行执行:adb shell dumpsys activity service SystemUIService ,搜索 active notifications 字段可查看当前通知栏显示的所有通知。通过 pkg+通知id 找到对应的通知,查看其messageCount值是否符合预期。


以上内容对您是否有帮助?
更新时间:2023-04-03

目录