Android 角标学习总结

作者: 夏_Leon | 来源:发表于2018-07-24 16:29 被阅读19次

    前言

    角标,英文名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的设置,手头的测试机不够,测试有限。

    参考

    有关Android应用桌面角标(BadgeNumber)实现的探讨

    相关文章

      网友评论

        本文标题:Android 角标学习总结

        本文链接:https://www.haomeiwen.com/subject/zdhemftx.html