前言
角标,英文名badge,即桌面上显示未读消息的小数字,原ios功能,Android原生并没有该功能。目前被大部分android厂商所支持,但都是厂商自己支持,所以要考虑不同品牌的兼容问题。当前项目中想兼容品牌:华为、oppo、vivo、小米、魅族(猛然发现国内Android全是国产品牌的天下了,三星、诺基亚。。。)
框架
简单搜索下就能发现,目前使用率比较高的框架是 ShortcutBadger ,先对该框架进行测试。
添加依赖,进行简单测试
implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
结果如下:
华为 P7-L07,EMUI3.1 支持
vivo re1.16,Funtouch OS 支持
荣耀 Che1-CL20,EMUI 不支持
OPPO R9m,ColorOS V3.0 不支持
魅族 MEIZU M6,Flyme 6.2 不支持
小米 RedmiNote5A,MIUI 9.6 支持(要在notification弹出前修改)
兼容性研究
华为,参考官方文档 华为角标开发API , 注意支持平台为EMUI4.1 及以上,手里俩测试机都太老。较新的手机应该按这个api就可以设置成功,倒不复杂。
OPPO,R9后台的通知设置里,有显示角标的选项,事实上该选项并不是对所有app开放的,就微信、QQ等国民应用有打开该选项的权限,目测是OPPO做了白名单限制,对这些机型也没有办法。
小米,miui6以上版本,角标数量为通知栏里的通知数量总和,同时可以在通知的"badgeCount"字段里设置通知数目,但也是计算在总和里的。 比如两条普通通知,和一条badgeCount为10的通知,则角标显示为12。当清空掉后者,角标显示为2。
因此可以通过在弹出通知前,修改notification进行角标设置,但是我的项目是采用极光推送的默认通知的,无法触及到notification,很难采用这种办法。有一个思路是收到极光推送时马上取消通知再仿造一个类似的notification弹出,在该notification中设置badgeCount,试了下可以实现,但触及到业务修改,且太丑陋,暂不采用。
魅族Flyme系统,干脆就不支持角标,桌面倒清爽,非常舒服。
其他品牌的就按ShortcutBadger的设置,手头的测试机不够,测试有限。
网友评论