【回复“1024”,送你一个特别推送】
原文作者:小强-贝聊移动
原文地址:http://www.jianshu.com/p/199a9238015f
特别声明:本文为小强-贝聊移动原创并授权发布,未经原作者允许请勿转载,转载请联系原作者
作者:小强 贝聊移动开发部 Android 工程师
前言:本文主要讲述了以下三方面:
怎么在 Android 系统下让自家的应用图标像 iOS 系统那样支持数字角标的显示?
在网上找不到现成的解决方案的情况下,该如何去寻找问题的突破口?
一种简洁性和扩展性都比较高的封装思路。
先放一个传送门:https://github.com/beiliao-mobile/BadgeNumberManager
1.Android 系统下如何支持应用桌面角标 (BadgeNumber)的显示
其实本来 Android 原生系统是不支持应用桌面角标 (BadgeNumber) 显示的。我们目前看到的能支持应用桌面角标显示的 Android 系统,都是第三方厂商自己定制的。通过实现一套自己的launcher并且提供外部接口给第三方应用来调用即可。
我们公司的 APP 里涉及到 IM 的功能。所以经常会有用户向客服反馈,为什么 QQ、微信都支持应用桌面角标的显示,但你们的 APP 却不行...... 本着用户就是上帝的原则,于是应用桌面角标显示的优化就提上了日程。其实,测试部门在之前就已经跟我们提过这事了,只不过当时正忙于项目开发,没时间优化。前段时间需求不多的时候,给公司的 Android 应用加上了桌面角标显示的支持。现在将这个优化的过程总结一下。
目前已经存在的开源库
如果大家有接触过这方面的优化,应该很快就可以在搜索引擎上找到某个被推荐次数较多的开源库 ShortcutBadger:https://github.com/leolin310148/ShortcutBadger。
虽然这个库适配的覆盖机型貌似很多,但在实际的测试中发现,某些方法可能对于目前市面上的国产流行机型已经不奏效了。所以,不建议大家直接将这个开源项目用到项目中去。作为学习和参考倒是一个不错的选择。而且,在实际方案抉择的过程中,我们发现,公司的 APP 主流机型排行榜中,前十的机型几乎被 OPPO、vivo、华为、小米这四个品牌屠榜了。所以,我们的优化目标暂时就先定下来了:先集中精力适配市面上的这四个主流品牌机型。其他的冷门机型,后面再慢慢完善。(其实实际上我们也找不来那么多冷门的机型进行测试,所以对于没自身确认过奏效的方案,即使网上已经有人给出,出于谨慎还是先不采纳)
国产主流机型应用角标的适配(OPPO、vivo、华为、小米)
在开始之前,先声明一下。第一,不是所有的国产手机都能找到支持角标显示的方案(即使理论上可以,可能人家只对 QQ 微信等一些国民级的应用开放设置应用角标的白名单)。第二,本文中涉及到的方案都是经过实际测试且奏效的了(因为测试手机有限,所以不敢说针对这四个品牌的手机机型百分百支持,但支持大部分的机型应该是没问题的)。而且,有些品牌的手机适配方案很容易找到,有些品牌的适配方案则很难找到,这部分我会放到后面的章节来说。下面直接上适配方案:
华为:
先在AndroidManifest
文件里配置好下面的权限: